首页 > 解决方案 > 如何摆脱cppwinrt头文件中过多的参数警告C4002

问题描述

在以下情况下,我收到太多参数警告。我可以将其报告为错误,但 GitHub 中的存储库已关闭,并且 cpp-winrt 项目现在归 Microsoft 所有。

情况 使用 cpp-winrt 项目模板新建一个 windows 运行时组件项目。在项目设置的c++->预处理器部分的“预处理器定义”中添加宏“WINAPI_PARTITION_DESKTOP”。编译项目。

您将收到以下警告:

...\生成的文件\winrt\impl\windows.ui.xaml.media.animation.0.h(4510):警告 C4002:函数式宏调用“GetCurrentTime”的参数过多

与上述消息对应的行是“virtual int32_t __stdcall GetCurrentTime(int64_t*) noexcept = 0;”

可能名称 GetCurrentTime 可能与 Windows 旧 API 名称冲突!

标签: windows-runtimec++-winrtwinrt-component

解决方案


GetCurrentTime 是 Windows.h 宏定义和 WinRT 成员之间的已知冲突。一种解决方案是在您的 pch.h 中使用 #undef GetCurrentTime。


推荐阅读