1

我的嵌入式 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)?

4

1 回答 1

0

给联合和最里面的结构一个名字,如下所示:

typedef struct
{
  union
  {
    struct
    {
      CommandDirection_t ReadWrite  : 1;
      RegisterAddress_t Register    : 7;
    } Byte_struct;
    uint8_t Byte;
  } Byte_union;
} MemsAccelCommand_t;

否则,您打算如何访问联合字段?工会必须有名字。

于 2014-01-02T19:06:19.863 回答