C/C++枚举和char*数组

Eri*_*ric 4 c c++ enums char

请参阅文章中的以下代码,并不认为它是char*数组的标准C/C++语法.作为测试,Visual C++(visual studio 2005)和C++ Builder Rad XE都拒绝第二行.

不使用#defines,任何人都有任何技巧/提示,以保持enums和字符串数组排序同步而不诉诸STL?

更多的好奇心问题.

enum TCOLOR { RED, GREEN, BLUE };

char *TNCOLOR[] = { [RED]="Red", [GREEN]="Green", [BLUE]="Blue" };
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这篇文章来自于相当陈旧,我相信这可能在海湾合作委员会下有效,但尚未经过测试.

Nor*_*ame 7

这些是C99指定的初始化器.GCC在C90模式(以及在C++中)支持它们作为扩展.在这里阅读:

http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits

没有好的方法来保持枚举和字符串同步.如果我真的需要这个,那么我会编写一个脚本来从源代码中获取枚举声明并从中生成字符串数组.我真的很讨厌使用宏来做这件事.

更新:这是去年的一个问题,讨论了枚举 - >字符串转换(在这种情况下用于打印)

C++:将枚举值打印为文本