我在将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;
我总是在标头中看到编译器错误,其中的定义是:“预期标识符或'('在'{'标记之前”。这里我在做什么错了?
答案 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;
这是语法错误(尤其是.{
部分)。
您期望发生什么?