c++ - Linux 上 _DEBUG 的替代方案

标签 c++ linux

#ifdef _DEBUG
a = "ram";
#else
a = "sam";
#endif

它在 Visual Studio 中工作正常,因为 _DEBUG 是在预处理器中定义的,而它在 Linux 中不起作用,即使我在编译时给出了“-g”选项。有什么替代方案吗?我想要两个平台都使用相同的代码。

最佳答案

此操作的标准宏是 NDEBUG,尽管它具有与 _DEBUG 相反的含义(N 表示“not”)。所以你可以像这样编写可移植的代码:

#ifndef NDEBUG
a = "ram";
#else
a = "sam";
#endif

请注意我如何使用#ifndef 来否定条件。当然你也可以将其写为:

#ifdef NDEBUG
a = "sam";
#else
a = "ram";
#endif

如果您不喜欢这样,您还可以在 Linux 上通过如下编译来定义 _DEBUG:

g++ -g -D_DEBUG ...

关于c++ - Linux 上 _DEBUG 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709283/

相关文章:

linux - Apache 虚拟主机 - xxx.241.214.xxx :80 has no VirtualHosts

linux - 使用自定义名称创建 screen session

c++ - 是否可以在 C++ 中强制使用 "this"关键字?

c++ - 引用 Doxygen 类或命名空间列表 from\mainpage

c++ - WndProc 的类方法

c - 鼠标 Action 的input_event成员解释

c++ - 函数按值返回对象,如果对象不存在则不返回任何对象

c++ - 如何将 16 位无符号整数转换为更大的 8 位无符号整数?

linux - 为什么在 Multi2sim 上运行 python 脚本(可执行文件)会出现错误 "Invalid ELF file"?

linux - SCP 给出 "File or directory not found"