c - 错误: unused variable (struct)

标签 c gcc struct unused-variables

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 被视为“已使用”,因为您为其字段(ab 赋值) )明确地在以下几行中:

part1.a = 2;
part1.b = 3;

part2 从未使用过,仅在行中初始化:

struct complex part2 = {4, 5};

part3 更有趣,我很惊讶你的编译器没有抛出错误。通过执行以下操作:

struct complex part3 = {part3.a = 7, part3.b = 8};

您首先分配 part3.a = 7part3.b = 8,然后这些分配的结果将用于初始化结构 ( part3.a = 7 计算结果为 7part3.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/

相关文章:

c - 适用于 MAC 开发的 Xcode : How to have a keybinding for menu item?

c - 在给定邻接图和多次遍历的情况下优化方法以找到遍历最多的边

c++ - 我可以让 gcc 链接器创建一个静态库吗?

c:读取/写入哈希表到文件

c - 如果内存大小相等,如何将 C 结构转换为另一种结构类型?

c - 在 asm 中,printf() 如何知道传入了多少个变量?

c - 读取 ELF 文件的程序头内容

c - 如何在结构数组中初始化数组?

c++ - 使 MSVC 编译器 GCC 兼容?

c - 必须知道声明函数指针的结构偏移量