我想通过这两种方式声明调试标志是打开还是关闭:
#define inDebugMode true
或
const bool inDebugMode = true;
Visual Studio 2010 中的编译器总是给出警告:
warning C4127: conditional expression is constant
这是为什么呢?如何正确申报?
最佳答案
没有看到代码,我怀疑你有以下构造:
if (inDebugMode)
{
}
这将始终为 true
,因此会出现警告。
建议使用预处理器代替if
:
#define inDebugMode 1
#if inDebugMode
#endif
这将移除警告并防止调试代码在不需要时被编译。请注意,您还可以通过编译器开关指定宏的值 /D
:
cl.exe /DinDebugMode=1 ...
但如果您选择命令行选项,则需要确保重建所有源,而不仅仅是更改的源。
关于c++ - 在 C++ 中定义发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878386/