fre*_*set 28 c gcc gcc-warning
我在C中有这个结构,我想初始化为零.如何摆脱缺失的括号警告?
typedef struct {
uint32_t incoming[FRAME_TYPE_MAX];
uint32_t outgoing[FRAME_TYPE_MAX];
uint32_t timeouts;
uint32_t crc_errors;
} pkt_t;
static pkt_t stats = {0};
Run Code Online (Sandbox Code Playgroud)
R..*_*R.. 38
这是GCC bug#53119:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
如果您想要修复它,请在错误报告中发布后续信息,表明这对您来说是个问题.
Jos*_*itt 26
由于结构中的第一个成员是您需要的数组:
static pkt_t stats = {{0}};
Run Code Online (Sandbox Code Playgroud)
外部支撑用于结构,内部支撑用于阵列.然而,还有许多其他方法可以给这只猫留下皮肤.(例如,静态已经初始化为零)
一种方法是初始化大括号内结构体的每个成员,而不是依赖隐式零填充。对于数组成员,您需要另一个可能会导致警告的 {}。另一种方法是禁用警告,但不建议这样做,因为它也可以捕获合法的错误。