给出这个功能:
int doThings() {
int x = 1;
return x;
x + 1;
cout << "x: " << x << '\n';
}
是否有编译器警告标志(g ++或clang ++)可以捕获返回后的代码不会被运行的事实?
更新:
使用-Wunreachable-code运行clang ++可以解决问题
答案 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
抓住的。