#define无法被库识别

问题描述 投票:-2回答:1

我正在构建一个库项目和一个测试项目来测试这个库。我希望用户(A.K.A.测试项目)能够为库定义一些东西,但是#define在我的库中无法识别,只是抛出一个错误。

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

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

#define PUT_DEFINE_HERE

在图书馆我只检查:

#ifdef PUT_DEFINE_HERE
//Do some stuff
#endif

如前所述,库没有看到用户定义的#define。我尝试了构建订单的一些东西,但到目前为止没有运气,任何想法?

c++ c-preprocessor
1个回答
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编译每个源。

© www.soinside.com 2019 - 2024. All rights reserved.