'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" ルールを使用)