컴파일러 오류 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" 규칙 사용)