可以使用什么预定义宏来检测使用clang的调试版本?

Vio*_*ffe 9 c++ debugging clang

MSVC _DEBUG在调试模式下定义,gcc NDEBUG在发布模式下定义.我可以在clang中使用什么宏来检测代码是否正在编译以进行发布或调试?

Som*_*ude 9

如果查看IDE的项目设置,您将看到这些宏实际上是在那里手动定义的,它们不会由编译器自动定义.事实上,编译器无法实际知道它是在构建"调试"还是"发布",它只是根据用户(或IDE)提供给它的标志来构建.

您必须自己制作宏并手动定义它们,就像IDE在创建项目时为您所做的那样.

  • @VioletGiraffe 实际上,您可以使用调试信息进行“发布构建”,或者使用优化进行“调试”构建。第一种情况(将调试信息添加到“发布”版本)有时非常有用。 (2认同)

小智 6

编译器不定义这些宏.你的IDE/Makefile/<insert build system here>做了.这不依赖于编译器,而是依赖于您使用的环境/构建帮助程序.

公约是定义DEBUG在调试模式下宏和NDEBUG在释放模式宏.