在Linux上可替代_DEBUG

Alternative to _DEBUG on Linux

本文关键字:DEBUG Linux      更新时间:2023-10-16
#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 ...