#ifdef、#ifndef 和#undef 是否适用于类似函数的宏?

Do #ifdef, #ifndef and #undef work with function-like macros?

有两种类型的宏 - function-like macros and object-like macros。我可以在类似对象的宏上执行各种 checks/operations:

#ifdef _SOME_OBJECT_LIKE_MACRO    // check if some object-like macro is defined
#undef _SOME_OBJECT_LIKE_MACRO    // undefine some object-like macro
#endif

#define _SOME_OBJECT_LIKE_MACRO 0xff

#ifdef#ifndef#undef 可以使用类似函数的宏吗?例如:

#ifdef _SOME_FUNCTION_LIKE_MACRO()  // check if some function-like macro is defined
#undef _SOME_FUNCTION_LIKE_MACRO()  // undefine some function-like macro
#endif

#define _SOME_FUNCTION_LIKE_MACRO() printf("This is such a useful macro!!!\n");

有用吗?如果没有,我怎么能...

...类似函数的宏?

#ifdef#ifndef#undef 使用类函数宏,但您只需要使用裸宏名称。不需要括号:

#ifdef _SOME_FUNCTION_LIKE_MACRO
#undef _SOME_FUNCTION_LIKE_MACRO
#endif

另见 http://tigcc.ticalc.org/doc/cpp.html#SEC19