我将在 IAR Workbench 中为 STM8 构建一个简单的库(.a 文件)。在这个库中,我想同时实现硬件 SPI 和软件 SPI 供用户选择。
在我的 library.c 中,我写道:
#include "library.h"
void LibraryInit()
{
#ifdef HARDWARE_SPI
funcToInitHardwareSPI();
#else
funcToInitSoftwareSPI();
#endif
}
在我的 library.h 中,我写道:
#ifndef __LIB_H
#define __LIB_H
#define HARDWARE_SPI
void LibraryInit();
#endif
然后我认为如果用户#define HARDWARE_SPI
在目标项目中定义,该库将运行硬件 SPI 部分。如果不是,则应使用软件 SPI。
但是在我构建项目并将 library.a 和 library.h 添加到测试项目中之后,由于 library.h 没有#define HARDWARE_SPI
,例程仍然进入硬件 SPI 部分。我如何构建可以让用户通过写入#define
头文件来选择功能的 library.a?