C++ GCC-结构内部未使用的变量警告

C++ GCC-结构内部未使用的变量警告,c++,gcc,c++14,C++,Gcc,C++14,我正在寻找一种解决方案,当作为结构的一部分分配变量时,GCC(Arm嵌入式版本)能够告诉我变量是否根本不存在 当前的示例根本没有警告,我想对此进行更改 示例1: 示例1有3个sturct变量: var1:已分配但从未在其他地方引用,因此我想删除它 var2:甚至没有分配,在这里浪费内存是没有意义的,移除它 返回:分配和引用,一切正常 因此,我想在这里得到两个警告 struct mydummy_t { bool var1; bool var2; int return; };

我正在寻找一种解决方案,当作为结构的一部分分配变量时,GCC(Arm嵌入式版本)能够告诉我变量是否根本不存在

当前的示例根本没有警告,我想对此进行更改

示例1:

示例1有3个sturct变量: var1:已分配但从未在其他地方引用,因此我想删除它 var2:甚至没有分配,在这里浪费内存是没有意义的,移除它 返回:分配和引用,一切正常

因此,我想在这里得到两个警告

struct mydummy_t
{
    bool var1;
    bool var2;
    int return;
};

static mydummy_t dummy;

int main()
{
    dummy.var1 = true;
    dummy.return = 15;
    return dummy.return;
}
示例2:

与示例1相同,但现在我们有了一个类构造函数,它最初处理每个变量,但同样,并不是所有变量都被引用

struct mydummy_t
{
    mydummy_t() : var1(false), var2(true), return(-1) {}
    bool var1;
    bool var2;
    int return;
};

static mydummy_t dummy;

int main()
{
    dummy.var1 = true;
    dummy.return = 15;
    return dummy.return;
}

你对编译器要求太高了。如何知道此结构未在其他编译单元中使用,这些编译单元可能引用任何或所有这些成员?(也就是,<代码>返回<代码>是C++中的保留字)

正确。链接器从未看到成员定义(它们不需要链接),因此也无法发出警告。有什么解决方案可以帮助编译器和链接器检测此类情况吗?@aphardt:不,我不这么认为。如果您怀疑某个成员可能未使用,只需将其注释掉,然后查看在尝试编译它时会发生什么。