oli*_*dev 3 c++ visual-studio-2010
我想在这两种方式中声明调试标志是打开还是关闭:
#define inDebugMode true
Run Code Online (Sandbox Code Playgroud)
要么
const bool inDebugMode = true;
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010中的编译器始终发出警告:
warning C4127: conditional expression is constant
Run Code Online (Sandbox Code Playgroud)
这是为什么?我怎样才能正确申报?
没有看到代码,我怀疑你有以下构造:
if (inDebugMode)
{
}
Run Code Online (Sandbox Code Playgroud)
这将永远是true,因此警告.
建议使用预处理器而不是if:
#define inDebugMode 1
#if inDebugMode
#endif
Run Code Online (Sandbox Code Playgroud)
这将删除警告并防止在不需要时编译调试代码.注意,您还可以通过编译器开关指定宏的值/D:
cl.exe /DinDebugMode=1 ...
Run Code Online (Sandbox Code Playgroud)
但是如果选择命令行选项,则需要确保重建所有源,而不仅仅是更改的源.