我的程序中有调试输出,如下所示:
#define DEBUG
...
#ifdef DEBUG
std::cout << "[RE_words] " << m_re << std::endl;
#endif
和DEBUG
在我的程序中手动定义。当我发布版本时,我总是注意到这一行。在Visual Studio中,还有 Debug vs Release 版本的配置,这些版本处理用于编译的命令行等。我是否还可以使用配置“调试”自动为编译器定义DEBUG
?怎么样?
答案 0 :(得分:66)
Visual Studio自动为Debug版本定义_DEBUG符号(对于非调试版本,定义NDEBUG)。
另一种方法是转到项目设置 - &gt;配置属性 - &gt; C / C ++ - &gt;预处理器,并手动编辑预处理器定义。
另见:
This answer更详细地解释了_DEBUG和NDEBUG之间的区别
This answer解释了NDEBUG符号的用途以及它是否由标准定义。
答案 1 :(得分:8)
使用_DEBUG
。 Visual C ++为Debug配置定义了这个。在项目的属性对话框中查看Debug Configuration的预处理程序指令。
答案 2 :(得分:3)
我也以为我只需查看预处理器属性并删除_DEBUG。如果您选择其中一个调试运行时库选项,Visual Studio将尝试通过设置_DEBUG来提供帮助。
在项目属性页配置属性\ C / C ++ \代码生成中,为运行时库选择的选项会影响多个定义。选择调试库( / MTd 或 / MDd )时, _DEBUG 定义 集。
参见MSDN /MD, /MT ... 有关开关的更多信息。根据这些选项设置了几个#define。当你甚至在包含任何头文件之前试图找到谁设置#define时,它们是非常不可见的!
答案 3 :(得分:0)
是的,您应该检查项目选项页面,编译 - >高级编译选项。 但是,默认情况下,VS会自动为调试模式定义DEBUG指令。