X-宏是最好的解决方案。例子:#include enum Colours {# define X(a) a,# include "colours.def"# undef X
ColoursCount};char const* const colours_str[] = {# define X(a) #a,# include "colours.def"# undef X
0};std::ostream& operator<
if (c >= ColoursCount || c
return os <
std::cout <
色系:X(Red)X(Green)X(Blue)X(Cyan)X(Yellow)X(Magenta)
但是,我通常更喜欢下面的方法,这样就可以稍微修改字符串了。#define X(a, b) a,#define X(a, b) b,X(Red, "red")X(Green, "green")// etc.