コンパイラ エラー C3163
'construct': 属性が前の宣言と整合しません
定義に適用される属性が、宣言に適用される属性と競合しています。
C3163 を解決する方法の 1 つは、事前宣言の属性を削除することです。 事前宣言の属性は、定義の属性より小さいか、多くてもそれと同じ値である必要があります。
C3163 エラーの原因として考えられるのは、Microsoft のソース コード注釈言語 (SAL) です。 /analyze
フラグを使用してプロジェクトをコンパイルされるまで、SAL マクロは展開されません。 /analyze
なしで正常にコンパイルされるプログラムは、/analyze
オプションを使用して再コンパイルしようとすると、C3163 をスローする可能性があります。 SAL の詳細については、「SAL 注釈」を参照してください。
例
次の例では C3163 が生成されます。
// C3163.cpp
// compile with: /clr /c
using namespace System;
[CLSCompliant(true)] void f();
[CLSCompliant(false)] void f() {} // C3163
// try the following line instead
// [CLSCompliant(true)] void f() {}