我的嵌入式C99兼容程序中有多个结构(以微芯片编译器使用的定义类型为模型,尽管这不是微芯片应用程序)。这是一个典型的例子:
typedef struct
{
union
{
struct
{
CommandDirection_t ReadWrite : 1;
RegisterAddress_t Register : 7;
};
uint8_t Byte;
};
} MemsAccelCommand_t;
CommandDirection_t和RigisterAddress_t是枚举。稍后在我的代码中,我声明并初始化我的结构:
MemsAccelCommand_t command = { .ReadWrite = CMD_Read };
这没有警告或错误编译,但是当我lint文件时,我收到错误:“错误65:预期成员名称。”
如何调整我的代码以便不再引发lint错误,或者我该如何为此禁用lint警告(除了禁用错误65)?
答案 0 :(得分:0)
为union和最里面的结构命名,如:
typedef struct
{
union
{
struct
{
CommandDirection_t ReadWrite : 1;
RegisterAddress_t Register : 7;
} Byte_struct;
uint8_t Byte;
} Byte_union;
} MemsAccelCommand_t;
否则,您打算如何访问联合字段?工会必须有一个名字。