如何在Linux上使用#ifdef_DEBUG
How to use #ifdef _DEBUG on Linux?
我在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
放在这个代码段以北的某个地方,或者放在项目设置中。
相关文章:
- #ifdef和未声明的标识符
- C++ Macros #ifdef
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 在 Boost::fiber 中引发的BOOST_ASSERT故障 Visual Studio "Debug" 构建
- 我在主函数的左括号上不断收到错误,消息为obj\Debug\main.o||在函数"ZN11linked_listC1Ev"中:|
- 流行"Debug Assertion Failed"
- 更新 #ifdef 中的现有变量值?
- 使用 constexpr 替换 #define 和 #ifdef 进行条件编译
- 使用 #ifdef 时的多个定义
- 使用 [#define & #ifdef] 跨文件激活代码块
- 解决与构建"Debug x64"版本的暗网相关的错误
- Visual Studio Debug 只在一个线程中
- 以下 OpenCV 源代码中是否存在错误?(#ifdef 没有 #else)
- 有C++标准库 ifdef 或 ifndef 预处理器指令吗?
- 在Visual Studio代码中定义DEBUG和RELEASE符号
- Visual Studio 2017中使用ifstream时,Release和Debug的输出不同
- C++预处理器同时执行#ifdef和#ifndef
- /usr/bin/ld: build-debug/obj/gpsitem.o: 文件无法识别: 文件被截断