我看到一些发布的代码在 SO 上出现超出范围的错误,这让我感到奇怪。我希望编译器为此代码生成警告(至少在最高级别)
#pragma warning(push,4)
int main(){
int x[2];
x[2]=0;
return 0;
}
#pragma warning(pop)
但事实并非如此。
EDG 编译器很好地说:
"sourceFile.cpp", line 3: warning:
subscript out of range
x[2]=0;
^
实际上 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)
但这不是我的问题。
我认为这种失败是在警告 VC9 中的严重遗漏错误,(因为自动变量更是如此!!!!)。谁能给我一个改变主意的严肃理由?