我在 MVS2008 中创建了一个巨大的 C++ 解决方案作为“win32 控制台应用程序”项目,创建过程中唯一的附加选项是:“预编译头文件”。
在这个解决方案中,我现在有大量以各种方式定义的枚举:它们总是在.h
文件中定义,但它们可以在命名空间内、类内或命名空间内的类内定义。
我想以更优雅的方式定义(我知道如何以蛮力的方式来做,但它不会是 DRY,对吧?)一个函数:
void myfunc( const char * )
当我将这个枚举的“字符串值”传递给它时,它将打印一个枚举的所有“字符串”值。
准确地说,如果我的代码中有某处:
enum Place
{
Home,
Work
};
我希望能够将字符串“Place”和打印字符串“Home”和“Work”的函数传递给我的函数。
确实有很多枚举,如果可能的话,我希望避免大量修改它们,最好不要修改它们。我想到了一个小型解析器,但我认为这根本不是最优的。
顺便说一句,我被限制不使用与 boost 不同的外部事物,但我可以使用宏。我希望能够以某种方式定义枚举上的“循环”的概念,以及“枚举字符串中的循环”的概念,但根本不知道该怎么做。
欢迎所有想法。