Windows SDK 7.1 编译器上的 yvals.h C4514 警告
yvals.h C4514 warning on Windows SDK 7.1 compiler
我正在使用警告级别为 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++(,因为只有这样它才能确定 翻译单元中没有任何内容引用该内联函数。它 查找函数的行号,但警告是否为 是否发出取决于它是否在 翻译单元,而不是在编译时是否启用了它 功能。
因此,您要么需要始终禁用它,要么不必担心它。