error: unused variable (struct)
error: unused variable (struct)
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
被认为是 "used",因为您在下面明确地为其字段(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
的字段赋值。这是未定义的行为。
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
被认为是 "used",因为您在下面明确地为其字段(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
的字段赋值。这是未定义的行为。