【发布时间】:2018-05-11 17:57:42
【问题描述】:
我有一个 c++ 库,它定义了如下 MACROS,
/* 这里定义的是结果头文件*/
#define RESULT_ENUM( prefix, name, value ) prefix ## name = (value)
#define STATE_RESULT_LIST( prefix ) \
RESULT_ENUM( prefix, SUCCESS, 0 ), \
RESULT_ENUM( prefix, PENDING, 1 ),
#define COMMON_RESULT_LIST( prefix ) \
RESULT_ENUM( prefix, SUCCESS, 0 ), \
RESULT_ENUM( prefix, PENDING, 1 ),
typedef enum
{
STATE_RESULT_LIST ( STATE_ )
COMMON_RESULT_LIST ( CHANNEL_ )
}domain_result;
这就是它的使用方式
int main(int argc, char** argv) {
domain_result res = CHANNEL_SUCCESS;
cout<<STATE_SUCCESS <<endl;
cout<<CHANNEL_PENDING<<endl;
return 0;
}
大家建议不要使用宏,现在我不想修改c++源文件,只需要修改头文件。
那么如何将这些转换成 c++ 风格的枚举和静态常量呢?
【问题讨论】:
标签: c++ enums namespaces