我在同一个解决方案中有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.
答案 0 :(得分:1)
通常的解决方案是构建两个A,一个用于Debug,一个用于非调试。然后其他项目可以选择链接哪一个。
答案 1 :(得分:1)
#define
是preprocessor macro
在编译之前进行扩展。您在B
中所做的任何事情都不会对已编译的A
产生影响。
答案 2 :(得分:1)
那么,您需要一些B和A的公共标题,您可以在其中定义DEBUG选项。
或者在B中创建一些静态函数,如isDebug
,根据DEBUG定义它并在A中使用它。