如何在Linux上使用#ifdef_DEBUG

How to use #ifdef _DEBUG on Linux?

本文关键字:#ifdef DEBUG Linux      更新时间:2023-10-16

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

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

但当我在IDE中选择Debug时,它就不起作用了。然而,它在Windows上运行。我在Linux上使用Eclipse IDE进行C++编码。

在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!

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

如果您使用cmake,请将以下内容放入您的顶级CMakeLists.txt文件

set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG "_DEBUG")

在CMake邮件列表上找到

#define _DEBUG放在这个代码段以北的某个地方,或者放在项目设置中。