相关疑难解决方法(0)

这在VC9的警告级别4没有警告编译.为什么不认为这是编译器缺陷?

我看到一些发布的代码超出范围错误,这让我很奇怪.我希望编译器为此代码生成警告(至少在最高级别)

#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中遗漏的严重错误,(因为自动变量!!!!).任何人都可以给我一个改变主意的严肃理由吗?

c++ visual-c++-2008

4
推荐指数
4
解决办法
634
查看次数

标签 统计

c++ ×1

visual-c++-2008 ×1