【发布时间】:2017-02-16 05:58:53
【问题描述】:
在我的 C++ .h 文件中:
class foo {
#define useThis true
...
}
在我的.cpp 文件中:
#if useThis
... generate A code
#else
... generate B code
#endif
问题是#define 值没有被读取到.cpp 文件中,所以发生的情况是A 和B 都在生成。
我将.h 文件包含在.cpp 文件的顶部。
【问题讨论】:
-
首先,在这里发布真实的代码会有所帮助。任何合适的编译器都无法生成这两者(在这种情况下,
generate B code将是获胜的分支)。其次,使用1而不是true,因为true不是预处理器值。那,或者只使用#ifdef useThis或#if defined(useThis)并完全省略true值。 -
@Qix C++ 预处理器确实将
true和false识别为适当的布尔值。