是否有一个编译器警告会在函数返回后捕获代码?

时间:2014-05-12 10:25:59

标签: c++ g++ clang++

给出这个功能:

int doThings() {
    int x = 1;
    return x;
    x + 1;
    cout << "x: " << x << '\n';
}

是否有编译器警告标志(g ++或clang ++)可以捕获返回后的代码不会被运行的事实?

更新:

使用-Wunreachable-code运行clang ++可以解决问题

2 个答案:

答案 0 :(得分:4)

gcc编译器(最多4.4个)有一个-Wunreachable-code选项,应该抓住这个。

这不是-Wall群组的一部分,因为您在开发过程中更有可能无法访问代码,即您最有可能使用-Wall的时间。

由于与优化工具不一致,因此从4.5开始删除。删除后,我的意思是编译器仍然接受该标志但不对其起作用。我相信Clang仍然包含该选项,因为它喜欢与gcc兼容。

答案 1 :(得分:1)

Clang提供-Wunreachable-code,会警告此代码(live example)。

GCC也提供此选项,但自gcc 4.5以来一直默默禁用。

x + 1;什么都不做,无论它是否曾经运行过。这是由-Wunused-value抓住的。