msvc 预编译 header 警告抑制

msvc precompiled header warning suppress

在我的 C++ 项目中,我使用预编译的 headers 作为编译时优化。但是,当我在编译器设置中启用 /Wall 选项时,我无法抑制预编译 header 文件中的任何警告。

Header 文件:

#ifndef _PRECOMPILED_H
#define _PRECOMPILED_H

#pragma warning(push, 0)
#pragma warning(disable: 4514)
#include <vector>
#pragma warning(pop)
#endif /* _PRECOMPILED_H */

源文件:

#include "precompiled.h"

我最终在向量中收到大量警告。

当我执行相同操作时,但在常规文件中,一切都按预期进行。 这个问题有什么解决方案吗?

我正在使用 Visual Studio 2013 社区版更新 4.

不要将 /Wall 与 Visual C++ 一起使用。它与 g++ 的 -Wall 不同。使用 /W4(与 g++ -Wall 大致等价)。

我没有收到包含矢量的 4514 警告。 您仅禁用了 4514,并且仅在矢量 header 中。我认为这发生在碰巧使用矢量的其他代码中,并且警告消息(您没有 post)指的是矢量 header 因为这是优化器删除的函数被声明的地方.