我正在创建一个静态库,该库在外部头文件configuration.h中引用一些#define配置参数。
我已经编译了静态库并将其安装到另一个包含configuration.h文件的项目中。但是,更改该文件中的参数无效。似乎configuration.h已被编译到静态库中,从而呈现硬编码的参数。
如何获得静态库以引用外部文件?
最佳答案
包含#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
。关于ios - 静态库需要引用项目配置文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9479558/