0
有两种类型的宏 - function-like macros和object-like macros。我可以像对象宏执行各种检查/操作:#ifdef,#ifndef和#undef是否与函数式宏一起工作?
#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");
这是否行得通?如果没有,我怎么能......
- 检查
- 存在检查非存在
- 取消定义
...一个函数宏?
您应该注意,以下划线开头的名称以及大写字母或另一个下划线是绝对保留供实现使用的 - 您不应在自己的代码中创建此类名称(尽管您可能使用系统提供的名称像那样)。事实上,你可能完全避免使用前导下划线。 –