如何从内部Visual Studio文件中抑制警告
How to suppress warnings from internal Visual Studio files
我在Visual Studio 2012中设置了警告级别为EnableAllWarnings (/Wall),在这个简单的程序中:
#include "math.h"
int main() {
return 0;
}
当我编译时,我得到了几个警告,如:
1>C:Program Files (x86)Microsoft Visual Studio 11.0VCincludemath.h(161): warning C4514: 'hypot' : unreferenced inline function has been removed
如果我将"math.h"
替换为"string.h"
,我将继续收到关于string.h
的警告,以此类推。
有人知道如何删除这些警告吗?
仔细查看实际收到的警告消息:
1> warning C4514: 'hypot' : unreferenced inline function has been removed
如果你对自己说:"so?!",这正是我想说的。
警告C4514是一个臭名昭著的无用的,实际上只是在喊着要被全球压制。这是一个完全不可操作的项,描述了在使用库时的预期情况。
警告c4711 -一个函数已被选中用于内联展开-是您将看到的另一个嘈杂的警告。当然,只有在启用了优化的情况下编译时才能得到这个,这可能就是为什么您还没有看到它的原因。
就像链接的文档所说的,这些是"信息警告",默认情况下是禁用的。这是伟大的,除了我,像你一样,更喜欢编译我的代码与"所有警告"(/Wall
)启用,这些只是增加噪音。所以我把它们分别关掉。
你可以通过在VS IDE的项目属性中添加抑制符来禁用这些警告,或者你可以在代码文件的顶部使用pragma指令(例如,在预编译的头文件中):
#pragma warning(disable: 4514 4711)
也许这能奏效:
// you can replace 3 with even lower warning level if needed
#pragma warning(push, 3)
#include <Windows.h>
#include <crtdbg.h>
#include "math.h"
//include all the headers who's warnings you do not want to see here
#pragma warning(pop)
如果您计划将代码移植到非MS环境中,那么您可能希望将所有使用的外部头文件包装在特定的头文件中,以便在移植时可以更改。
相关文章:
- 禁止显示有关包含文件中 #pragma 包的警告
- MSVC 杂注警告省略 CPP 文件中的'default'
- 警告被视为错误 - 未生成"对象"文件
- Xcode 8.3.2 中的错误警告:文件的非可移植路径 - 指定的路径与磁盘上的文件名不同
- 不应该在 /usr/local/include 中抑制来自头文件的警告吗?
- 生成文件:此警告的名称是什么?
- 当外部变量在其他文件中声明不同时,如何使G 产生警告
- 警告:打开错误文件(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.
- 错误 C2220:警告被视为驱动程序开发中生成的错误无'object'文件
- 将终端上的所有消息和警告打印到文件中
- 禁用特定包含文件的警告
- 编译 c++ 与 -Wall - 来自其他文件的警告
- 警告 C4819 在 Visual Studio C++ 2013 Express - 没有 BOM 的 UTF8 文件
- g++:有没有办法警告头文件是否不包含在文件中
- 如何禁用非项目文件中的警告?---Visual Studio 2010
- 错误 C2220:警告被视为错误 - 未生成"对象"文件
- 在没有警告提示的情况下打开文件
- 如何在使用g++构建时抑制某些文件中的警告
- gdb 7.0警告:核心文件中的fpregset大小错误
- 使用GCC/GMake预编译头文件导致' pragma '警告(Premake)