0

我有以下工会:

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

知道我想使用我的类型并初始化变量。扫描后(我想)我找到了解决方案:

uint16ByteT   myVariable  = {0};

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

“@”所需的简单类型

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

4

1 回答 1

1

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

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

或者干脆

uint16ByteT myVariable = {{0}};

注意uint16ByteT而不是uint16Byte

另请注意,由于此版本中引入了匿名structs/ s,因此您需要在 C11 模式下编译。union

于 2018-07-04T11:17:00.737 回答