Din*_*esh 5 c macros c-preprocessor
struct Error
{
MACRO(1, Connect);
MACRO(2, Timeout);
};
Run Code Online (Sandbox Code Playgroud)
我需要以上述代码生成以下代码的方式定义MACRO().
struct Error
{
static const int Connect = 1;
static const int Timeout = 2;
const char * const name[] = {"Connect", "Timeout"};
};
Run Code Online (Sandbox Code Playgroud)
这是可能的,或者什么是我想要做的事情的替代方案?
您想要的是拥有一个列表,它将自动生成定义和名称列表,对吗?
如果是这样,请在 google 中搜索 X Macros。
例子:
#define EXPAND_AS_DEFINITION(a, b) static const int b = a;
#define EXPAND_AS_ARRAY(a, b) #b,
#define STATE_TABLE(ENTRY) \
ENTRY(1, Connect) \
ENTRY(2, Timeout)
struct Error
{
STATE_TABLE(EXPAND_AS_DEFINITION)
static const char * const name[];
};
const char * const Error::name[] = {STATE_TABLE(EXPAND_AS_ARRAY) 0};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |