【问题标题】:GCC: Break compilation on "control reaches end of non-void function"GCC:在“控制到达非无效函数的结尾”上中断编译
【发布时间】:2012-04-07 19:23:00
【问题描述】:

当我添加时

#pragma GCC diagnostic error "-Wreturn-type"

编译器会为每个缺少的return 生成警告,而不是错误。我怎样才能让它把这个特定的警告变成一个错误?

测试代码:

#pragma GCC diagnostic error "-Wreturn-type"

int foo(int x)
{
    if (x) return 8;
}

int main(int narg, char* arg[])
{
    foo(narg);
}

我试过了

i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1(Apple Inc. build 5666)(点 3)

i686-apple-darwin10-llvm-g++-4.2 (GCC) 4.2.1(基于 Apple Inc. build 5658)(LLVM build 2335.6)

更新:我按照@sastraxi 的建议尝试了-Werror=return-type,但效果相同。

【问题讨论】:

    标签: c++ c gcc g++


    【解决方案1】:

    尝试将-Werror=return-type 传递给 gcc!

    【讨论】:

    • 没错。但让它看起来像一个答案,而不是一个问题。
    • 在使用 g++ 或 gcc 4.5.2-8ubuntu4 运行时,即使不添加它也会出现错误。
    • Apple 的 gcc 不同且旧,我猜你不能。 -Werror=<arg> 是一个新功能(在 4.4 methinks 中添加)
    • 这是我的错,我没有仔细阅读这个问题,看不出它是 4.4 之前的版本。如果你愿意,你可以直接使用-Werror 将所有警告变成错误。
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多