DirectX 11枚举D3D11_USAGE和D3D_PRIMITIVE_TOPOLOGY警告

问题描述 投票:0回答:1

[使用DirectX 11和MSVS2019时,使用枚举'D3D11_USAGE'和'D3D_PRIMITIVE_TOPOLOGY时出现以下警告:

警告C26812枚举类型'D3D11_USAGE'未作用域。更喜欢枚举类”而不是“枚举”(枚举3)。

警告C26812枚举类型'D3D_PRIMITIVE_TOPOLOGY'已取消作用域。比“枚举”(枚举3)更喜欢“枚举类”。

如何解决这些警告?该代码可以很好地处理警告,但我宁愿将其删除。

谢谢。

c++ enums directx-11
1个回答
0
投票

C26812是Microsoft Visual C ++代码分析(/analyzeC++ Core Guidelines checkers规则的一部分。

通常,Windows 10 SDK系统标头中的警告会自动删除。最可能的问题是您使用的是旧版DirectX SDK,因为这些标头不会被自动删除。

首先要考虑的是删除所有对旧版DirectX SDK的使用。 Visual Studio 2019随附的Windows 10 SDK已包含所需的所有Direct3D标头。如果使用XNAMath,则可以改用DirectXMath。如果使用的是旧版D3DX11库,请移至open source alternatives之一。如果您使用的是XAudio 2.7,请改用XAudio2Redist。如果使用D3DX库编译HLSL着色器,请直接使用D3DCompile。如果您使用的是XInput 1.3,请改用built-in XInput版本。

如果删除旧版DirectX SDK不可行,请调整您的include / lib路径,以便尽可能获取Windows 10 SDK标头。有关详细信息,请参见Microsoft Docs,但是简短地编辑VC ++目录,以便使DXSDK_DIR包含/库路径在搜索顺序中是LAST而不是FIRST

您还可以通过使用#pragma warning(disable : 26812)和/或命令行选项/wd26812禁止显示警告来忽略该警告。 C ++核心准则检查器有些花哨,在某些情况下实际上只是advice

Visual C ++团队从Microsoft本机推荐的规则中删除了许多检查器,但仍列出了26812。您可以创建自定义规则集,也可以在Build上禁用代码分析。就我个人而言,我只是在项目中隐瞒了这一点,因为我有充分的理由不使用class enum

© www.soinside.com 2019 - 2024. All rights reserved.