C语言 初始化联合/结构的正确方法是什么?



我得到了以下联合:

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

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

uint16ByteT   myVariable  = {0};

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

"@"所需的简单类型

通常,xc8编译器使用"@"在特定地址引入变量。

要初始化匿名struct/union

,您可以使用:
uint16ByteT myVariable = {{0}, .complete = 0};

或者干脆

uint16ByteT myVariable = {{0}};

注意uint16ByteT而不是uint16Byte

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

相关内容

  • 没有找到相关文章

最新更新