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");
這是否行得通?如果沒有,我怎麼能......
- 檢查
- 存在檢查非存在
- 取消定義
...一個函數宏?
您應該注意,以下劃線開頭的名稱以及大寫字母或另一個下劃線是絕對保留供實現使用的 - 您不應在自己的代碼中創建此類名稱(儘管您可能使用系統提供的名稱像那樣)。事實上,你可能完全避免使用前導下劃線。 –