#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/