warn_unused_result属性和返回类对象

时间:2016-12-22 15:18:33

标签: c++ gcc warnings

请考虑以下代码:

class cls
{
};

__attribute__((warn_unused_result))
cls fn1()
{
    return cls();
}

__attribute__ ((warn_unused_result))
int fn2()
{
    return 1;
}


int main()
{
    auto x = fn1();
    (void)x;

    auto y = fn2();
    (void)y;

    return 0;
}

当我用-Wall -Wextra和gcc 5.4.0编译时,我得到 a 警告:

warning: ignoring return value of ‘cls fn1()’, 
declared with attribute warn_unused_result [-Wunused-result]

有人可以告诉我什么是错的吗? 尽管有fn1变量,为什么x会显示此警告,为什么fn2没有显示此警告?

更新1 :在一点帮助下,我尝试使用g ++ 4.8.3 - 结果相同。更多 - g ++ 3.3.6产生两个警告 - 适用于fn1fn2

什么"修复"警告是......猜猜是什么 - 在类中添加数据成员或虚拟成员函数(非虚函数无效)。对我来说听起来像编译器错误。

更新2 :实际上添加成员或虚拟功能会完全禁用警告,因此只需调用fn1();就不会再产生警告。

0 个答案:

没有答案