Share via


コンパイラ エラー C2733

'C' リンケージで関数をオーバーロードすることはできません

extern "C" リンケージを使用して複数のオーバーロードされた関数が宣言されています。 "C" リンケージを使用する場合は、指定した関数の 1 つの形式のみを外部にできます。 オーバーロードされた関数は同じ非装飾名を持っているため、C プログラムでは使用できません。

このエラーは、Visual Studio 2019 の準拠に関する変更が原因で、アップグレード後に発生する可能性があります。 Visual Studio 2019 バージョン 16.3 以降では、/Zc:externC- コンパイラ オプションによってこのチェックが緩和されます。 このオプションは、コマンド ラインで /permissive- オプションの後に指定する必要があります。

次の例では C2733 が生成されます:

// C2733.cpp
extern "C" {
   void F1(int);
}

extern "C" {
   void F1();   // C2733
   // try the following line instead
   // void F2();
}

関連項目

コンパイラ エラー C2116
extern (C++)
/Zc:externC (標準の C++ extern "C" ルールを使用)