我看到一些发布的代码超出范围错误,这让我很奇怪.我希望编译器为此代码生成警告(至少在最高级别)
#pragma warning(push,4)
int main(){
int x[2];
x[2]=0;
return 0;
}
#pragma warning(pop)
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
EDG编译器很好地说:
"sourceFile.cpp", line 3: warning:
subscript out of range
x[2]=0;
^
Run Code Online (Sandbox Code Playgroud)
实际上EDG说的更多(所有这些都是预期的)
"sourceFile.cpp", line 1: warning:
unrecognized #pragma
#pragma warning(push,4)
^
"sourceFile.cpp", line 4: warning:
subscript out of range
x[2]=0;
^
"sourceFile.cpp", line 3: warning:
variable "x" was set but never used
int x[2];
^
"sourceFile.cpp", line 7: warning:
unrecognized #pragma
#pragma warning(pop)
Run Code Online (Sandbox Code Playgroud)
但这不是我的问题.
我认为这个失败警告VC9中遗漏的严重错误,(因为自动变量!!!!).任何人都可以给我一个改变主意的严肃理由吗?