yvals.h Windows SDK 7.1编译器上的C4514警告

Mat*_*son 5 c++ winapi visual-studio-2010

我正在编译警告级别为4的cl.exe版本_MSC_FULL_VER == 160030319.我收到此警告:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(773) : warning C4514: 'std::_Mutex::_Mutex' : unreferenced inline function has been removed
Run Code Online (Sandbox Code Playgroud)

这是一点源代码:

__thiscall _Mutex(_Uninitialized)
{   // do nothing
}
Run Code Online (Sandbox Code Playgroud)

yvals.h包含在stdint.h其中我包括如下:

#pragma warning(disable:4514)

#include <stdint.h>

#pragma warning(default:4514)
Run Code Online (Sandbox Code Playgroud)

但它仍然没有摆脱警告.我在这里做错了吗?

Jes*_*ood 5

我在这里找到了答案。有人将其报告为错误,但按设计将其关闭。答案是警告直到翻译单元结束时才开始。引用:

感谢您报告此问题。我已按设计解决了它,因为 4514 和 4710 警告是在翻译单元的末尾发出的(翻译单元是源文件及其所有包含的标题)。这就是为什么对部分翻译单元禁用它们没有效果。尽管行号可能使它看起来好像编译器在编译代码时在翻译单元的中间发出这些警告,但事实并非如此。

编译器前端(负责解析 C++)在翻译单元的末尾发出警告 4514“未引用的内联函数已被删除”,因为只有这样才能确定翻译单元中没有任何内容引用该内联函数。它查找函数的行号,但是否发出警告取决于它是否在翻译单元的末尾启用,而不是在编译该函数时是否启用。

因此,您要么需要始终禁用它,要么不必担心。