Udostępnij za pośrednictwem


Błąd kompilatora C2733

nie można przeciążyć funkcji z połączeniem "C"

Więcej niż jedna przeciążona funkcja jest zadeklarowana z połączeniem extern "C" . W przypadku używania "C" połączenia tylko jedna forma określonej funkcji może być zewnętrzna. Ponieważ przeciążone funkcje mają taką samą nieukodowaną nazwę, nie mogą być używane z programami języka C.

Ten błąd może wystąpić po uaktualnieniu z powodu zmian zgodności w programie Visual Studio 2019. Począwszy od programu Visual Studio 2019 w wersji 16.3, /Zc:externC- opcja kompilatora zrelaksuje tę kontrolę. Opcja musi pojawić się po dowolnej /permissive- opcji w wierszu polecenia.

Przykład

Poniższy przykład generuje C2733:

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

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

Zobacz też

Błąd kompilatora C2116
extern (C++)
/Zc:externC (Użyj standardowych reguł języka C++ extern "C" )