如何在 Linux 上使用 #ifdef _DEBUG?

ant*_*r89 4 c++ linux debugging eclipse-cdt

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

#ifdef _DEBUG
cout << "Debug!" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)

但是当我在IDE中选择“调试”时,它不起作用。然而它在 Windows 上运行。我在 Linux 上使用 Eclipse IDE 进行 C++ 编码。

小智 6

在 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;
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令行编译它

 g++ -D _DEBUG define.cpp
Run Code Online (Sandbox Code Playgroud)

将给出以下结果

Hello world!
But also Hello Stack Overflow!
Run Code Online (Sandbox Code Playgroud)

然而,对于 eclipse cdt,您最好的选择可能是修改项目属性中的路径和符号属性。