#define未被库识别

时间:2018-12-28 11:03:16

标签: c++ c-preprocessor

我正在构建一个库项目和一个测试项目以对其进行测试。我希望用户(也就是测试项目)能够为该库定义一些内容,但是#define在我的库中无法识别,只会引发错误。

**我将库项目构建为静态库,构建顺序是先构建库,然后构建测试项目,因为该项目依赖于库。

在测试项目中,我希望用户能够这样定义(在包含之前):

#define PUT_DEFINE_HERE

在图书馆,我只需要检查一下:

#ifdef PUT_DEFINE_HERE
//Do some stuff
#endif

如前所述,该库看不到用户定义的#define。我按构建顺序尝试了一些东西,但到目前为止还没有运气,有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您希望库“接受”用户#define,请检查PUT_DEFINE_HERE是否存在

#ifdef PUT_DEFINE_HERE
//Do some stuff
#endif

必须在抬头控制杆上完成,并且仅在此处

第二,包含库头的用户项目必须#define PUT_DEFINE_HERE 之前包括库头。

或者,如果这样的设置与库设计不兼容,则必须在编译时添加#define,例如:

gcc -DPUT_DEFINE_HERE ...

在这种情况下,请确保在相关时使用-DPUT_DEFINE_HERE编译每个源。