禁用警告c4702似乎不适用于VS 2012

Inc*_*bus 12 warnings compiler-warnings suppress-warnings visual-studio visual-studio-2012

我有一些测试代码,我提前添加了其余的代码,所以其余的代码永远不会在测试中达到.由于我设置了警告级别4,因此会产生c4702:无法访问代码警告

我试过像这样禁用:

//do something
    return 0;

    /*-------------------------------------------------------------------------*/

#pragma warning(disable: 4702)
    //real code
Run Code Online (Sandbox Code Playgroud)

但编译器仍然呻吟.因为我已经设置将每个警告都视为错误,这不会编译......

我正在使用Visual Studio 2012 Premium ...

任何帮助都将很高兴.

Fra*_*ser 20

您可能只需要在受影响的函数开始之前放置pragma而不是在其中.

来自MSDN文档:

对于4700-4999范围内的警告编号(与代码生成相关的编号),编译器遇到函数的开括号时生效的警告状态将对函数的其余部分生效.使用函数中的警告编译指示来更改数字大于4699的警告的状态仅在函数结束后生效.

例如:

#pragma warning(push)
#pragma warning(disable: 4702)
bool Do() {
  return true;
  return true;  // No warning generated
#pragma warning(pop)
}

bool DoDo() {
  return true;
  return true;  // Generates C4702
}
Run Code Online (Sandbox Code Playgroud)