如何跨项目阅读预定义(#define)?

时间:2011-03-27 07:07:36

标签: c++

我在同一个解决方案中有2个项目:A是静态库,B是exe。 B取决于A

在B中,我为DEBUG模式做了声明。像#define DEBUG

这样的东西

然后我去检查是否在A中定义了DEBUG,如果是,则进行一些调试打印:

// Code in A
#ifdef DEBUG
cout<<"debug message";
#endif

但这似乎不起作用。我想当A建成时它不知道B.我们怎么做呢?基本上因为我有不同的可执行项目依赖于A,其中一些需要打印调试消息,有些则不需要。然而,每次我从B切换到另一个可执行项目时,我都不想重建A.

3 个答案:

答案 0 :(得分:1)

通常的解决方案是构建两个A,一个用于Debug,一个用于非调试。然后其他项目可以选择链接哪一个。

答案 1 :(得分:1)

#definepreprocessor macro

在编译之前进行扩展。您在B中所做的任何事情都不会对已编译的A产生影响。

答案 2 :(得分:1)

那么,您需要一些B和A的公共标题,您可以在其中定义DEBUG选项。 或者在B中创建一些静态函数,如isDebug,根据DEBUG定义它并在A中使用它。