【问题标题】:GCC - Unused Variable Warning inside StructsGCC - 结构中未使用的变量警告
【发布时间】:2020-03-24 07:59:30
【问题描述】:

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

当前的示例根本没有警告,我想更改。

示例 1:

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

因此我想在这里收到 2 个警告。

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:

与示例一相同,但现在我们有一个类构造函数,它最初寻址每个变量,但同样,并非所有变量都被引用。

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++ gcc c++14


    【解决方案1】:

    你对编译器的要求太高了。怎么知道这个结构没有在其他编译单元中使用,它可能引用任何或所有这些成员? (另外,return 是 C++ 中的保留字。)

    【讨论】:

    • 正确。链接器永远不会看到成员定义(它们不需要链接),因此它也无法发出警告。
    • 有没有一种解决方案可以帮助编译器和链接器,以便他们能够检测到这种情况?
    • @aphardt:不,我不这么认为。如果您怀疑某个成员可能未被使用,只需将其注释掉,看看当您尝试编译它时会发生什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多