如何在Linux上使用#ifdef _DEBUG?

时间:2012-01-27 14:24:36

标签: c++ linux debugging eclipse-cdt

我在Linux C ++上遇到了_DEBUG宏的问题。 我试着用这样的东西:

#ifdef _DEBUG
cout << "Debug!" << endl;
#endif

但是当我在IDE中选择Debug时它不起作用。但它适用于Windows。 我在Linux上使用Eclipse IDE进行C ++编码。

3 个答案:

答案 0 :(得分:2)

如果您使用 cmake ,请在您的顶级 CMakeLists.txt 文件中添加以下内容

set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG "_DEBUG")

CMake Mailinglist

上找到

答案 1 :(得分:1)

#define _DEBUG放在您拥有此代码段的位置的某个位置,或者放在项目设置中。

答案 2 :(得分:1)

在Windows上,您可能正在使用Visual Studio,它在调试模式下构建解决方案时会自动定义 _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,最好的选择可能是项目属性中的modify the paths and symbols properties