假设您要生成标识符和字符串的匹配列表
enum { NAME_ONE, NAME_TWO, NAME_THREE }; myFunction(NAME_ONE, "NAME_ONE"); myFunction(NAME_TWO, "NAME_TWO"); myFunction(NAME_THREE, "NAME_THREE");
..没有重复自己,没有自动生成代码,使用C/C++宏
初步猜测:
您可以添加包含的#include文件
myDefine(NAME_ONE) myDefine(NAME_TWO) myDefine(NAME_THREE)
然后使用它两次,如:
#define myDefine(a) a, enum { #include "definitions" } #undef myDefine #define myDefine(a) myFunc(a, "a"); #include "definitions" #undef myDefine
但#define不允许你在字符串中放置参数?
对于你的第二个#define,你需要使用#preprocessor运算符,如下所示:
#define myDefine(a) myFunc(a, #a);
将参数转换为字符串.