VS2013忽略杂注警告禁用
VS2013 ignoring pragma warning disable
int main() {
#pragma warning(push)
#pragma warning(disable: 4101)
int i;
#pragma warning(pop)
}
####
int main() {
#pragma warning(suppress: 4101)
int i;
}
我相信其中任何一个都应该在Visual Studio 2013上编译,警告被视为错误,没有C4101警告(关于我是一个未引用的局部变量。 这是 4 级警告。
但是,它仍然给我警告。 即使我关闭了被视为错误的警告,它仍然会给我警告,尽管它会编译,因为没有错误。
我没有使用预编译的标头/stdafx.h。 我看到其他一些问题,说这种编译指示技术可以解决实际代码(也许他们的意思是标题中的代码,但没有指定或看起来像那样(。 其他一些人含糊地说,没有解释,在stdafx.h之前的任何 #pragma 命令都会被忽略。 但是'https://msdn.microsoft.com/en-us/library/d9x1s805(v=vs.120(.aspx"特别提到编译指示可以在源代码中覆盖编译器选项。 当然,我从来没有使用过stdafx.h,我更像是一个Unix人,所以也许我完全缺少一些完全基本的东西。
我尝试指定 C4101 而不仅仅是 4101,但它无法处理其中的 alpha。 我尝试指定 #pragma 警告(push 2(,即使这会击中我不想做的所有 3 级和 4 级警告 - 即使这样仍然会发出 4 级警告。
这是我的编译器命令行选项: /MP /GS /W4 /Zc:wchar_t /Zi /Gm- /Od /sdl /Fd"<...>pragmaWarningIntermediatevc120.pdb" /fp:precise /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"<...>pragmaWarningIntermediate" /EHsc /nologo /Fo"<...>pragmaWarningIntermediate" /Fp"<...>pragmaWarningIntermediatepragmaWarning.pch"
如您所见,这些命令行选项省略了被视为错误的警告。
某些警告是"函数作用域",无法使用 #pragma warning(suppress: 4101)
来抑制。正如您所指出的,也不能仅通过在特定行周围执行此操作来禁用它们。您必须为整个函数禁用此警告:
#pragma warning(push)
#pragma warning(disable: 4101)
int main() {
int i;
}
#pragma warning(pop)
另请注意,对于特定于一行而不是范围的警告,#pragma warning(suppress: xxx)
的使用特定于文件中的下一行。
我同意,#pragma warning(suppress: 4101)
应该这样做。
问:为什么不试试#pragma warning(disable: 4101)
?
或
#pragma warning(push)
#pragma warning(disable: 4101)
int i;
... more code ...
#pragma warning(pop)
以下是Microsoft文档:
https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 使用typeid警告未使用的变量
- 示例C++项目编译中的警告
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 如何修复编译器警告 C6386 和 C6385?
- 返回语句后的代码,没有警告
- 获取隐式转换溢出从无符号到已签名的警告
- VS2013忽略杂注警告禁用
- 如何在VS2013社区中禁用警告C4927
- VS2013 和 Unicode 文字给出警告
- VS2013的Qt4到Qt5迁移链接器警告(和错误)
- VS2013警告C4172返回Rvalue
- VS2013:如何禁用项目外部包含的头文件的警告