我正在创建一个静态库,它引用外部头文件configuration.h中的一些#define配置参数。
我编译了静态库并将其安装到另一个包含configuration.h文件的项目中。但是,更改该文件中的参数无效。似乎configuration.h正在编译到静态库中,从而使参数硬编码。
如何获取静态库以引用外部文件?
答案 0 :(得分:1)
包含#define
预处理程序指令的头文件只能影响代码的编译。由于静态库已经编译,因此它不受预处理程序指令的影响。
您应该使用运行时构造,例如if
来更改静态库的行为方式。
如果你的代码是:
// configuration.h
#define USE_FLUX_CONDENSER 1
// static library
void advanceTime() {
#if USE_FLUX_CONDENSER
chargeFluxCondenser()
#endif
}
它将成为:
// configuration.h
extern BOOL g_useFluxCondenser;
// static library
BOOL g_useFluxCondenser;
void advanceTime() {
if (g_useFluxCondenser) {
chargeFluxCondenser()
}
}
在初始化代码中的某处,您设置了g_useFluxCondenser = YES
。