次の方法で共有


コンパイラ エラー 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() {}

関連項目

SAL 注釈