Поделиться через


Ошибка компилятора C2733

Невозможно перегрузить функцию с помощью компоновки "C"

Несколько перегруженных функций объявляются с extern "C" помощью компоновки. При использовании "C" компоновки только одна форма указанной функции может быть внешней. Так как перегруженные функции имеют то же несоотвержденное имя, они не могут использоваться с программами 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"