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

yvals.h C4514 warning on Windows SDK 7.1 compiler

本文关键字:yvals C4514 警告 SDK 编译器 Windows      更新时间:2023-10-16

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

C:Program Files (x86)Microsoft Visual Studio 10.0VCINCLUDEyvals.h(773) : warning C4514: 'std::_Mutex::_Mutex' : unreferenced inline function has been removed

这是一段源代码:

__thiscall _Mutex(_Uninitialized)
{   // do nothing
}

yvals.h包含在我包含的stdint.h中,如下所示:

#pragma warning(disable:4514)
#include <stdint.h>
#pragma warning(default:4514)

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

我在这里找到了答案。有人将其报告为错误,但它被设计关闭了。答案是,警告直到翻译单元结束才会启动。报价:

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

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

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