error: unused variable 'part2' [-Werror,-Wunused-variable]
该错误仅发生在第 2 部分,即使它也已初始化,只是以不同的方式。这只是编译器问题吗?
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};
}
最佳答案
正如上面评论中提到的,part1
被视为“已使用”,因为您为其字段(a
和 b
赋值) )明确地在以下几行中:
part1.a = 2;
part1.b = 3;
part2
从未使用过,仅在行中初始化:
struct complex part2 = {4, 5};
part3
更有趣,我很惊讶你的编译器没有抛出错误。通过执行以下操作:
struct complex part3 = {part3.a = 7, part3.b = 8};
您首先分配 part3.a = 7
和 part3.b = 8
,然后这些分配的结果将用于初始化结构 ( part3.a = 7
计算结果为 7
,part3.b = 8
计算结果为 8
)。它本质上变成了以下一组语句:
part3.a = 7;
part3.b = 8;
struct complex part3 = {7, 8};
我希望您的编译器会抛出错误,因为您在实例化 part3
之前尝试为其字段赋值。这是未定义的行为。
关于c - 错误: unused variable (struct),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50777275/