Visual studio (MSVC) 2019で C26812のwarningを無視する方法です
C26812 は enum class に関する警告で、たとえば次のようなメッセージが出力されます。
Prefer ‘enum class’ over ‘enum’ (Enum.3).
この警告はC++11で新しく追加された enum class と従来のenumを区別するためのもので、通常は無視すべきではありません。
しかし古いコードやC/C++のコードが混在している場合は、無視した方が手っ取り早いです。
というわけで、C26812 の警告を抑制する方法をまとめます。
特定のコードブロック内でのみC26812を無視する方法
#pragma warning でコードを括ります
#pragma warning(push) #pragma warning(disable: 26812 ) // 警告が出るコード #pragma warning(pop)
プロジェクト全体でC26812を無視する方法
rulesetといファイルを作って、プロジェクトのプロパティに追加します。
具体的には、まず以下の内容で、 disable_c26812.ruleset というファイルを作成します。
<?xml version="1.0" encoding="utf-8"?> <RuleSet Name="disable_c26812" ToolsVersion="16.0"> <Include Path="nativerecommendedrules.ruleset" Action="Default" /> <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native"> <Rule Id="C26812" Action="None" /> </Rules> </RuleSet>
このファイルをプロジェクトに登録します。手順は、 プロパティ → コード分析 → Microsoft → アクティブな規則 → プルダウンをクリックして → 参照... → 上記で作成した disable_c26912.ruleset を選択、となります。
面倒な場合は vcxproj ファイルを編集して、PropertyGroupに以下の行を追加します
<CodeAnalysisRuleSet>c26812_disable.ruleset</CodeAnalysisRuleSet>