我正在创建一个静态库,该库在外部头文件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/

10-14 22:06