Tre*_*key 3 c c++ macros c-preprocessor ifndef
在定义宏函数之前,我可以检查它是否已经存在
(这可以避免覆盖先前的定义).
我可以像这样实现检查和定义:
#ifndef MACRO(X)
#define MACRO(X) FUNCTION(X)
#endif
Run Code Online (Sandbox Code Playgroud)
或者像这样:
#ifndef MACRO
#define MACRO(X) FUNCTION(X)
#endif
Run Code Online (Sandbox Code Playgroud)
当函数已经定义时,两者似乎都有效.
那么,哪个是正确的?哪个更受欢迎?
没有.
标准指定#ifndef
等同于#if !defined
,并且参数defined
必须是(可能带括号的)标识符.您不能在标识符中包含parens,因此defined MACRO(X)
不是允许的表单.这种使用defined
会导致未定义的行为,因此它不可移植.
归档时间: |
|
查看次数: |
126 次 |
最近记录: |