【发布时间】:2018-06-09 18:20:54
【问题描述】:
error: unused variable 'part2' [-Werror,-Wunused-variable]
该错误仅发生在 part2 中,即使它也已被初始化,只是方式不同。只是编译器的问题吗?
int main(void)
{
struct complex
{
int a;
int b;
};
struct complex part1;
part1.a = 2;
part1.b = 3;
struct complex part2 = {4, 5};
struct complex part3 = {part3.a = 7, part3.b = 8};
}
【问题讨论】:
-
如果您对
part3的初始化有未定义的行为,我不会感到惊讶。 -
"只是编译器的问题吗?" -- 鉴于未使用的变量是完全标准的,并且您特别要求让您的编译器针对完全标准的代码发出错误消息,我想说这与其说是编译器问题,不如说是用户问题......
-
part1被初始化,然后被使用(通过为其字段分配值)。part2已初始化但未使用。 -
我被告知
part2未使用,part1已设置但未使用 ([-Werror=unused-but-set-variable])。part3初始化程序很奇特。它使用7到part3.a的赋值结果来初始化.a成员——它不是指定的初始化器。它接近于未定义的行为,修改.a两次。
标签: c gcc struct unused-variables