#include <stdio.h>
// ここで定数を定義する
#define LIST \
DEF(hoge, 1.0f), \
DEF(gufa, 2.0f), \
DEF(piyo, 3.0f)
// enumの生成
#undef DEF
#define DEF(a, b) a
enum EnumHoge { LIST };
// 構造体の生成
#undef DEF
#define DEF(a, b) {a, b, #a}
struct HogeHoge {
EnumHoge id;
float value;
const char* name;
} const table[] = { LIST };
int main(int ac, char*av []) {
for (size_t n = 0; n < sizeof(table)/sizeof(HogeHoge); ++n) {
printf("table[%d] = id:%d value:%f name='%s'\n", n, table[n].id, table[n].value, table[n].name);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDjgZPjgZPjgaflrprmlbDjgpLlrprnvqnjgZnjgosKI2RlZmluZSBMSVNUIFwKREVGKGhvZ2UsIDEuMGYpLCBcCkRFRihndWZhLCAyLjBmKSwgXApERUYocGl5bywgMy4wZikKCi8vIGVudW3jga7nlJ/miJAKI3VuZGVmIERFRgojZGVmaW5lIERFRihhLCBiKSBhCmVudW0gRW51bUhvZ2UgeyAgTElTVCB9OwoKLy8g5qeL6YCg5L2T44Gu55Sf5oiQCiN1bmRlZiBERUYKI2RlZmluZSBERUYoYSwgYikge2EsIGIsICNhfQpzdHJ1Y3QgSG9nZUhvZ2UgewogIEVudW1Ib2dlIGlkOwogIGZsb2F0ICAgIHZhbHVlOwogIGNvbnN0IGNoYXIqIG5hbWU7Cn0gY29uc3QgdGFibGVbXSA9IHsgTElTVCB9OwoKaW50IG1haW4oaW50IGFjLCBjaGFyKmF2IFtdKSB7CiAgZm9yIChzaXplX3QgbiA9IDA7IG4gPCBzaXplb2YodGFibGUpL3NpemVvZihIb2dlSG9nZSk7ICsrbikgewogICAgcHJpbnRmKCJ0YWJsZVslZF0gPSBpZDolZCB2YWx1ZTolZiBuYW1lPSclcydcbiIsIG4sIHRhYmxlW25dLmlkLCB0YWJsZVtuXS52YWx1ZSwgdGFibGVbbl0ubmFtZSk7CiAgfQp9CgoKCg==