undef和define <MACRO> 0有什么区别?

lxu*_*usr 2 macros c-preprocessor

想要了解undef之间的区别,并将宏定义为0.谢谢.

Nic*_*ick 7

#define MACRO 0
Run Code Online (Sandbox Code Playgroud)

将预处理程序标记定义MACRO为文字0

#undef MACRO
Run Code Online (Sandbox Code Playgroud)

删除预处理程序令牌的定义MACRO,使其好像从未存在过.

例如:

#define MACRO 0

#if defined ( MACRO )
// we get here
#endif

#if ( MACRO )
// we don't get here
#endif

#undef MACRO

#if defined ( MACRO )
// we don't get here
#endif
Run Code Online (Sandbox Code Playgroud)

  • 再举一个例子,`#undef MACRO`之后的'#define MACRO 1`就可以了,而`#define MACRO 0`之后的`#define MACRO 1`就不行了. (2认同)