初始化联合/结构的正确方法是哪种?

时间:2018-07-04 11:06:49

标签: c xc8

我有以下工会:

typedef union
{
    struct
    {
        uint8_t LSB;
        uint8_t MSB;
    };
    int16_t     complete;
}uint16ByteT;

知道我要使用我的类型并初始化变量。扫描SO之后(我认为),我找到了解决方法:

uint16ByteT   myVariable  = {0};

但是我的编译器给我一条错误消息:

  

“ @”必需的简单类型

通常,xc8编译器使用“ @”将变量带到特定地址。

1 个答案:

答案 0 :(得分:1)

要初始化匿名struct / union,您可以使用:

uint16ByteT myVariable = {{0}, .complete = 0};

或者简单地

uint16ByteT myVariable = {{0}};

通知uint16ByteT代替uint16Byte

还要注意,由于此版本引入了匿名struct s / union s,因此您需要以C11模式进行编译。