コンパイラ エラー 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"
ルールを使用)