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