我有以下工会:
typedef union
{
struct
{
uint8_t LSB;
uint8_t MSB;
};
int16_t complete;
}uint16ByteT;
知道我要使用我的类型并初始化变量。扫描SO之后(我认为),我找到了解决方法:
uint16ByteT myVariable = {0};
但是我的编译器给我一条错误消息:
“ @”必需的简单类型
通常,xc8编译器使用“ @”将变量带到特定地址。
答案 0 :(得分:1)
要初始化匿名struct
/ union
,您可以使用:
uint16ByteT myVariable = {{0}, .complete = 0};
或者简单地
uint16ByteT myVariable = {{0}};
通知uint16ByteT
代替uint16Byte
还要注意,由于此版本引入了匿名struct
s / union
s,因此您需要以C11模式进行编译。