我有以下工会:
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/