#ifdef,#ifnf和#undef是否可以使用类似函数的宏?

时间:2017-03-05 04:00:03

标签: c macros conditional-compilation

有两种类型的宏 - function-like macrosobject-like macros。我可以对类似对象的宏执行各种检查/操作:

#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");

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

  • 检查是否存在
  • 检查是否存在
  • 取消定义

......一个类似函数的宏?

1 个答案:

答案 0 :(得分:2)

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

#ifdef _SOME_FUNCTION_LIKE_MACRO
#undef _SOME_FUNCTION_LIKE_MACRO
#endif

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