我在Linux C++中遇到了_DEBUG宏的问题。 我尝试使用类似于以下的代码:
#ifdef _DEBUG
cout << "Debug!" << endl;
#endif
但是当我在IDE中选择调试时它不能工作。然而在Windows上可以。我在Linux上使用Eclipse IDE进行C++编程。
我在Linux C++中遇到了_DEBUG宏的问题。 我尝试使用类似于以下的代码:
#ifdef _DEBUG
cout << "Debug!" << endl;
#endif
但是当我在IDE中选择调试时它不能工作。然而在Windows上可以。我在Linux上使用Eclipse IDE进行C++编程。
在Windows系统上,您可能正在使用Visual Studio,以便在Debug模式下构建解决方案时自动定义_DEBUG符号。符号通常在调用编译器时定义,然后它们将在预处理阶段中使用。
例如,如果您通过命令行使用GCC,并且要重新使用_DEBUG符号,因为您处理的是已经建立的代码库,您可以使用-D参数通过命令行来定义它。
#include <iostream>
int main() {
std::cout << "Hello world!\n";
#ifdef _DEBUG
std::cout << "But also Hello Stack Overflow!\n";
#endif
return 0;
}
使用以下命令编译此内容
g++ -D _DEBUG define.cpp
Hello world!
But also Hello Stack Overflow!
然而,对于Eclipse CDT,您最好的选择可能是在项目属性中修改路径和符号属性。
如果您使用 cmake,请将以下内容放入您的顶级 CMakeLists.txt 文件中:
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG "_DEBUG")
来源于CMake邮件列表
#define _DEBUG
放在此代码片段之北,或在您的项目设置中。#define _DEBUG
... 建议阅读一下你的编译器或STL集合的MSVC文档。 - Matt Joiner
<assert.h>
和标准的assert
宏时,当您不需要调试时定义NDEBUG
。 - Basile Starynkevitch