假设您要生成匹配的标识符和字符串列表
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 不允许您将参数放在字符串中?