防止未定义的宏

pha*_*lan 2 c c++ macros c-preprocessor

在C和C++中,使用像这样的宏:

#if ( 1 == __MY_MACRO__ )
// Some code
#endif
Run Code Online (Sandbox Code Playgroud)

如果未定义MY_MACRO,编译器将无法捕获并将其视为0.当代码的设计旨在使宏必须定义(非零)时,这可能会导致许多隐藏的错误.

有没有让编译器报告这个,即使编译器本身不寻找这样的东西?

AAT*_*AAT 7

使用#if defined(__MY_MACRO__)测试如果宏值定义.


BLU*_*IXY 6

#ifndef __MY_MACRO__
  #error "MY_MACRO NOT DEFINED"
#endif
Run Code Online (Sandbox Code Playgroud)