C++ 是否存在编译器警告,该警告将在函数返回后捕获代码?

C++ 是否存在编译器警告,该警告将在函数返回后捕获代码?,c++,g++,clang++,C++,G++,Clang++,鉴于此功能: int doThings() { int x = 1; return x; x + 1; cout << "x: " << x << '\n'; } int doThings(){ int x=1; 返回x; x+1; coutgcc的gcc编译器(高达4.4)有一个-Wunreachable-code选项,该选项应该能够捕捉到这一点 这不是-Wall组的一部分,因为在开发过程中,您很可能会遇到无法访问的代码,而

鉴于此功能:

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

coutgcc的
gcc
编译器(高达4.4)有一个
-Wunreachable-code
选项,该选项应该能够捕捉到这一点

这不是
-Wall
组的一部分,因为在开发过程中,您很可能会遇到无法访问的代码,而此时您最有可能使用
-Wall


由于与Optimizer不一致,它从4.5开始被删除。所谓删除,我的意思是编译器仍然接受该标志,但不会对其进行操作。我相信Clang仍然包括该选项,因为它喜欢与gcc兼容。

gcc
编译器(最多4.4)有一个
-Wunreachable code
选项,该选项应能捕获此信息

这不是
-Wall
组的一部分,因为在开发过程中,您很可能会遇到无法访问的代码,而此时您最有可能使用
-Wall


由于与Optimizer不一致,它从4.5开始被删除。所谓删除,我的意思是编译器仍然接受该标志,但不会对其进行操作。我相信Clang仍然包含该选项,因为它喜欢与gcc兼容。

Clang提供了
-Wunreachable code
,这将警告此代码()

GCC也提供了这个选项,但自从GCC4.5以来,它一直被默默地禁用


x+1;
不执行任何操作,无论它是否运行过。这被
-Wunused value
捕获,Clang提供了
-Wunreachable code
,它将为此代码发出警告()

GCC也提供了这个选项,但自从GCC4.5以来,它一直被默默地禁用


x+1;
不做任何事情,不管它是否运行过。这被
-Wunused value

捕获。通常应该发出“检测到无法访问的代码”警告。编译上述示例时,您没有收到它吗?请参阅gcc邮件列表上的。似乎
Wunreachable code
已被删除从gcc 4.5开始编译。我怀疑如果打开优化,大多数编译器都会对此发出警告。如果没有优化,大多数编译器会一次处理一条语句,因此无法检测到它。James,使用-O2编译似乎没有任何变化。通常应该发出“检测到无法访问的代码”警告。你不这样认为吗编译上述示例时获取它?请参阅gcc邮件列表上的。似乎自gcc 4.5以来,
Wunreachable code
已被删除。我怀疑,如果启用优化,大多数编译器都会对此发出警告。如果不进行优化,大多数编译器将一次处理一条语句,因此无法检测到它。James,编译使用-O2似乎没有改变任何事情如果问题不仅仅是误报或漏检,而启用警告实际上会影响代码生成,那么情况看起来有些可怕……如果问题不仅仅是误报或漏检,而启用警告实际上会影响代码然后这幅画看起来有点吓人。。。