假设要生成标识符和字符串的匹配列表
enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};
myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");
不重复自己,也不自动生成代码,使用C/C++宏
初步猜测:
您可以添加包含
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 myDefine(a) myFunc(a, #a);
将参数转换为字符串的。