Xmacro

将一个枚举的所有相关使用都使用宏来封装起来

最基础的就是这么一个声明所有枚举的宏

1
#define ColorForEachFunc(f) f(red) f(green) f(blue) f(white) f(black)

所有的枚举都在这里定义,而后真正的定义则使用这个宏

1
2
3
4
5
enum class Color {
#define ColorFunc(each) each,
ColorForEachFunc(ColorFunc)
#undef ColorFunc
};

定义一个暂时使用的宏函数,用来展开这里的每一种情况

函数中使用:

1
2
3
4
5
void fun(Color color) {
#define ColorFunc(each) if (color == Color::each){cout << #each << " "; return;}
ColorForEachFunc(ColorFunc)
#undef ColorFunc
}

switch使用:

1
2
3
4
5
  switch (color) {
#define ColorFunc(each) case Color::each: cout << #each << " "; break;
ColorForEachFunc(ColorFunc)
#undef ColorFunc
}

Xmacro
https://lhish.github.io/project/hide/Xmacro/
作者
lhy
发布于
2025年8月16日
许可协议