extern 용법 총화

3830 단어 extern
1.extern"C"설명
extern"C"는 C++가 C 가 작성 한 라 이브 러 리 파일 을 호출 할 수 있 도록 하 는 수단 입 니 다.컴 파 일 러 알림 에 C 방식 으로 함 수 를 처리 하려 면 extern"C"를 사용 하여 설명 해 야 합 니 다.cplusplus 는 cpp 의 사용자 정의 매크로 입 니 다.이 매크로 를 정의 하면 cpp 코드 임 을 표시 합 니 다.
main.cpp
extern void f1();



int main()

{

    f1();

    return 0;

}

a.cpp
#include <stdio.h>



void f1()

{

    printf("test
"); }

makefile
all:

    g++ -o base.o -c base.cpp

    g++ -o main.o -c main.cpp

    g++ -o test main.o base.o

UE 로 base.o 를 열 면 base.cpp 를 볼 수 있 습 니 다.Z2f1v puts __gxx_personality_v0,이때 컴 파일 러 는 함 수 를 으로 정의 합 니 다.Z2f1v。
코드 를 수정 하고 f1()함수 의 정 의 를 extern"C"로 c 함수 로 정의 합 니 다.main 에서 인용 하려 면 extern"C"를 추가 하여 f1()함 수 를 설명 해 야 합 니 다.
main.cpp
#ifdef __cplusplus

extern "C" {

#endif



extern void f1();



#ifdef __cplusplus

}

#endif



int main()

{

    f1();

    return 0;

}

a.cpp
#include <stdio.h>



extern "C"

{

void f1()

{

    printf("test
"); } }

이때 base.o 를 다시 보면 base.cpp f1 putsgxx_personality_v0,컴 파일 러 는 이 를 c 함수 f1 로 컴 파일 합 니 다.
만약 우리 가 main.cpp 중의 extern"C"를 제거한다 면?다시 컴 파일 하면 main.cpp:(.text+0x 12):undefined reference to'f1()'을 보고 합 니 다.f1()의 정 의 를 찾 을 수 없습니다.왜냐하면 이때 컴 파 일 러 가 함수 이름 을 찾 으 러 가 거 든 요.Z2f1v 의 c++정의.
extern"C"에 대해 새로운 인식 을 가지 게 되 었 습 니까?c+코드 를 작성 할 때,우 리 는 이전에 썼 던 c 라 이브 러 리 를 자주 호출 해 야 하기 때문에,호출 할 때,반드시 extern"C"를 사용 하여 함 수 를 설명 하 는 것 을 기억 해 야 한다.안 그러면 번역 이 안 돼 요.
2.extern 용법
c 에 대하 여
1.함수 이름 전에 extern 역할 을 추가 하 는 것 은 이 함 수 를 설명 하 는 것 으로 다른 소스 파일 에서 정의 할 수 있 습 니 다.사실 extern 을 사용 하지 않 는 효 과 는 같다.
2.extern 수식 변 수 는 이 변 수 를 다른 곳 에서 정 의 했 음 을 나타 내 고 여기 서 그 변 수 를 사용 할 것 입 니 다.
c++
1.좋 은 프로 그래 밍 습관 을 기 르 고 변수의 정 의 는 cpp 에 놓 습 니 다.이렇게 하면.h 만 인용 하면 변수의 성명 을 완성 할 수 있 습 니 다.나 는 c+코드 를 쓸 때 extern 을 정말 적 게 쓴다.
2.c 라 이브 러 리 에 대해 서 는 extern"C"를 사용 하 는 것 을 기억 해 야 합 니 다.

좋은 웹페이지 즐겨찾기