类似于函数的宏,与类似对象的宏同名

cor*_*ump 8 c macros c-preprocessor

有可能在C中有这样的东西:

#define MACRO_EX 333

#define MACRO_EX(X,Y) ((X) < (Y) ? : (X) : (Y))
Run Code Online (Sandbox Code Playgroud)

他们可以共存吗?

und*_*gor 5

C标准说(ISO/IEC 9899:1999,§6.10.3,2):

当前定义为类似对象的宏的标识符不应由另一个#define预处理指令重新定义,除非第二个定义是类似于对象的宏定义且两个替换列表相同.同样,当前定义为类似函数宏的标识符不应由另一个#define预处理指令重新定义,除非第二个定义是具有相同数量和参数拼写的类函数宏定义,并且两个替换列表相同.

所以答案是否定的.