我有以下工会:

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


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

uint16ByteT   myVariable  = {0};


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


  “ @”必需的简单类型


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

最佳答案

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

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


或简单地

uint16ByteT myVariable = {{0}};


注意uint16ByteT而不是uint16Byte

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

关于c - 初始化 union/结构的正确方法是哪种?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51172200/

10-12 19:22