#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
有两种类型的宏 - 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