首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX 11 enum D3D11_USAGE和D3D_PRIMITIVE_TOPOLOGY警告

DirectX 11 enum D3D11_USAGE和D3D_PRIMITIVE_TOPOLOGY警告
EN

Stack Overflow用户
提问于 2020-06-01 13:36:45
回答 1查看 329关注 0票数 0

当使用DirectX 11和MSVS2019时,在使用枚举'D3D11_USAGE‘和’D3D_PRIMITIVE_TOPOLOGY‘时会收到以下警告:

警告C26812,枚举类型'D3D11_USAGE‘不限定作用域。喜欢'enum class‘而不是'enum’(Enum.3)。 警告C26812,枚举类型'D3D_PRIMITIVE_TOPOLOGY‘不限定作用域。喜欢'enum class‘而不是'enum’(Enum.3)。

我能做些什么来解决这些警告?代码可以很好地处理警告,但我宁愿让它们消失。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 18:46:28

C26812是MicrosoftVisualC++代码分析(/analyze ) C++核心指南检查程序规则的一部分。

通常,Windows 10 SDK系统标头中的警告会自动被抑制。最可能的问题是,您正在使用遗留的DirectX SDK,因为这些标头不会被自动抑制。

首先要考虑的是删除遗留DirectX SDK的所有使用。VisualStudio2019附带的Windows10SDK已经包含了所需的所有Direct3D头。如果您使用的是XNAMath,则可以使用DirectXMath。如果您正在使用遗留的D3DX11库,请移动到开源替代方案之一。如果您使用的是XAudio 2.7,则使用XAudio2Redist。如果使用D3DX库编译HLSL着色器,则直接使用D3DCompile。如果您使用的是XInput 1.3,请考虑使用内置XInput版本。

如果删除遗留的DirectX SDK不是一个可行的选项,那么调整包含/库路径,以便尽可能地获得Windows10SDK头。有关详细信息,请参阅Microsoft,但简而言之,请编辑VC++目录,以便DXSDK_DIR包含/lib路径是最后的路径,而不是搜索顺序中的第一条路径。

您还可以通过使用#pragma warning(disable : 26812)和/或命令行选项/wd26812来消除警告。C++核心指南检查器有点迂腐,在某些情况下实际上只是建议

VisualC++团队已经从Microsoft本机推荐规则中删除了许多检查程序,但仍然列出了26812。您可以创建自定义规则集,也可以在构建时禁用代码分析。就我个人而言,我只是在我的项目中禁止使用这个,因为我有充分的理由不使用class enum

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62133506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档