extern 스토리지 클래스 지정자를 사용하면 여러 소스 파일에서 사용할 수 있는 개체를 선언할 수 있습니다. extern 선언은 설명된 변수를 현재 소스 파일의 다음 부분에서 사용할 수 있도록 합니다. 이 선언은 정의를 대체하지 않습니다. 선언은 외부에서 정의된 변수를 설명하는 데 사용됩니다.
extern 선언은 함수 외부 또는 블록의 시작 부분에 나타날 수 있습니다. 선언이 함수를 설명하거나 함수 외부에 나타나고 외부 연결이 있는 개체를 설명하는 경우 키워드 extern은 선택 사항입니다.
식별자에 대한 선언이 이미 파일 범위에 있는 경우 블록 내에서 발견된 동일한 식별자의 모든 extern 선언은 동일한 개체를 참조합니다. 파일 범위에 식별자에 대한 다른 선언이 없으면 식별자에 외부 연결이 있습니다.
C++는 extern 스토리지 클래스 지정자의 사용을 개체 또는 함수의 이름으로 제한합니다. 유형 선언과 함께 extern 지정자를 사용하는 것은 불법입니다. extern 선언은 클래스 범위에 나타날 수 없습니다.
다음과 같이 extern 키워드를 사용하여 파일 간에 변수를 공유할 수 있습니다. −
file3.h
extern int global_variable; /* Declaration of the variable */
file1.c
#include "file3.h" /* Declaration made available here */ #include "prog1.h" /* Function declarations */ /* Variable defined here */ int global_variable = 37; /* Definition checked against declaration */ int increment(void) { return global_variable++; }
file2.c
#include "file3.h" #include "prog1.h" #include <stdio.h> void use_it(void) { printf("Global variable: %d\n", global_variable++); }
stackoverflow의 다음 질문은 extern 키워드의 본질을 완벽하게 포착합니다. https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files.피>