可變引數的巨集與列舉結合會產生什麼樣子的火花?
問題:有時候定義了列舉需要知道列舉值對應的字串表達,有點像反射的機制。該如何簡潔的實現而又不容易出錯?
基礎設施
#define enum_entry(name, value) name = value,
#define tostring(arg) #arg
#define enum_str_entry(name, value) \
case value: break;
#define enum_enumeration(name, item_list)\
struct name##enumdef;\
static std::string tostring(const enum& value) break;\
} \}\};
應用:
#define people_items(item_def, ...)\
item_def(name, 1)\
item_def(born, 2)\
item_def(nation, 3)
enum_enumeration(people, people_items)
int main()
可變引數巨集
在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadicmacros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 void printf con...
可變引數巨集
參考各可變引數的部落格,才寫出現在的部落格,有不準確之處,還望指出。1.先看些標準c中printf函式原型 標準c就支援可變引數巨集,也就意味著函式的引數是不固定的,例如printf 函式的原型為 int printf const char format,在gnu c中,巨集也可以接受可變數目的引數...
可變引數巨集
可變引數巨集 在 gnu c 中,巨集可以接受可變數目的引數,就象函式一樣,例如 define pr debug fmt,arg.printk kern debug fmt,arg 用可變引數巨集 variadic macros 傳遞可變參數列 你可能很熟悉在函式中使用可變參數列,如 void pr...