将setting_与地址连接

时间:2019-06-15 10:11:10

标签: c

我在将setting_与一个地址串联时遇到了一些麻烦,然后将其用于映射到结构类型:

我使用:

#define ADDR_TO_SETTING(ADDR) { #ADDR, setting_ ## ADDR}

然后我有一个结构体和一个枚举:

typedef struct
{
    uint8_t setting_ADDR_LOG_ACTIVE;
} settings_t

typedef enum
{
   ADDR_LOG_ACTIVE=0
} addr_e

用途如下:

settings_t settings;

settings.ADDR_TO_SETTING(ADDR_LOG_ACTIVE) = false;

我总是在标头中看到编译器错误,其中的定义是:“预期标识符或'('在'{'标记之前”。这里我在做什么错了?

1 个答案:

答案 0 :(得分:0)

使用您的宏

#define ADDR_TO_SETTING(ADDR) { #ADDR, setting_ ## ADDR}

线

settings.ADDR_TO_SETTING(ADDR_LOG_ACTIVE) = false;

扩展到

settings.{ "ADDR_LOG_ACTIVE", setting_ADDR_LOG_ACTIVE} = false;

这是语法错误(尤其是.{部分)。

您期望发生什么?