다음을 통해 공유


링크 사양

"연결 사양" 서로 다른 언어로 작성 된 함수 (또는 프로시저) 연결에 대 한 프로토콜을 의미 합니다.다음과 같은 호출 규칙이 영향을 받습니다.

  • 대/소문자 구분 이름입니다.

  • 장식의 이름입니다.C에서 컴파일러 이름을 밑줄을 붙입니다.이 "장식" 라고 C + +에서는 이름 데코레이션 링크 단계를 통해 유형 정보를 유지 하는 데 사용 됩니다.(참조 하십시오 데코레이팅된 이름)

  • 스택에서 인수를 예상 하는 순서입니다.

  • 함수 스택에서 조정에 대 한 책임을 반환 합니다.호출 하는 함수 또는 호출된 된 함수가 담당합니다.

  • (여부 숨겨진된 인수가 전달 되는지) 숨겨진된 인수를 전달 합니다.

extern string-literal { declaration-list }
extern string-literal declaration

링크 사양이 점차적으로 기존 코드를 사용 함으로써 C 코드를 C++를 포팅 용이 합니다.

Microsoft 전용

현재 Microsoft C++에서 지원 되는 유일한 연결 사양 "C""C++".

Microsoft 특정 끝

다음 예제 함수 선언 atoi 및 atol C 링크가:

extern "C"
{
    int  atoi( char *string );
    long atol( char *string );
}

이러한 함수를 호출 하는 C 링크를 사용 하 여 이루어집니다.이러한 두 개의 선언으로 같은 결과 얻을 수 있습니다:

extern "C" int  atoi( char *string );
extern "C" long atol( char *string );

Microsoft 전용

모든 Microsoft C 표준 C++ 컴파일 감지 파일 사용 조건부 컴파일 지시문을 포함 합니다.C + + 컴파일 감지 되 면 프로토타입에 포함 되어 있는 extern "C" 지시문을 다음과 같이:

// Sample.h
#if defined(__cplusplus)
extern "C"
{
#endif

// Function declarations

#if defined(__cplusplus)
}
#endif 

Microsoft 특정 끝

표준 포함 파일으로의 함수를 선언 하지 않아도 extern "C".

오버 로드 된 함수의 경우 함수 이름이 같은 한 번 링크 지정자를 가질 수 있습니다.(자세한 내용은 함수 오버 로드입니다.)

다음 표에 다양 한 링크 사양 작업을 보여 줍니다.

링크 사양의 효과

사양

Effect

개체에

오브젝트의 연결을 영향을 줍니다.

함수

영향을 링크 함수 모두 함수 또는 개체 안에 선언

클래스에서

비멤버 함수와 클래스 내에서 선언 된 개체의 연결을 영향을 줍니다.

함수 두 개 이상의 링크 사양이 서로 일치 해야 합니다 경우. 이는 C 및 C++를 모두 포함 하는 함수를 선언 하는 오류입니다.뿐만 아니라 두 선언은 함수를 프로그램에서 발생할 경우 — 연결 사양 및 없이 하나 하나-연결 사양 사용 하 여 선언을 첫 번째 여야 합니다.모든 중복 선언은 연결 사양에 이미 있는 함수는 첫째 선언에 지정 된 링크가 제공 됩니다.예를 들면 다음과 같습니다.

extern "C" int CFunc1();
...
int CFunc1();            // Redeclaration is benign; C linkage is
                         //  retained.

int CFunc2();
...
extern "C" int CFunc2(); // Error: not the first declaration of
                         //  CFunc2;  cannot contain linkage
                         //  specifier.

함수와 개체를 명시적으로 선언 하는 정적 복합 링크 지정자의 본문 내에서 ({}) 정적 함수 또는 개체 이름으로 취급 됩니다 링크 지정 자가 무시 됩니다.다른 함수와 개체를 사용 하 여 선언 된 것 처럼 동작의 extern 키워드입니다.(참조 하십시오 지정 된 링크를 사용 하 여 extern 에 대 한 자세한 내용은 extern 키워드입니다.)

참고 항목

참조

링크를 지정 하려면 extern을 사용 하 여