외부 변수(External Variable)란?
외부 변수(external variable)는 흔히 전역 변수(global variable)라고도 불립니다. 이러한 변수는 함수 외부에서 정의되며, 프로그램 실행 전반에 걸쳐 어디서든 접근할 수 있습니다. extern 키워드는 바로 이 외부 변수를 선언하고 정의할 때 사용됩니다.
또한 extern "C" 구문은 C 언어로 작성되어 컴파일된 함수를 C++ 코드에서 선언할 때 사용합니다. 이를 활용하면 C++ 프로젝트 안에서 기존의 C 라이브러리를 그대로 가져다 쓸 수 있습니다.
extern의 기본 문법
extern의 기본적인 사용 형식은 다음과 같습니다.
extern 자료형 변수명; // extern을 이용한 변수 선언 extern 자료형 함수명(); // extern을 이용한 함수 선언
각 구성 요소의 의미는 다음과 같습니다.
- 자료형(datatype) – int, char, float처럼 변수가 담게 되는 데이터 타입을 의미합니다.
- 변수명(variable_name) – 사용자가 직접 지정하는 변수의 이름입니다.
- 함수명(func_name) – 선언하려는 함수의 이름입니다.
예제
#include <stdio.h>
extern int x = 32;
int b = 8;
int main() {
extern int b;
printf("extern 변수 x와 b의 값 : %d,%d\n", x, b);
x = 15;
printf("변경 후 extern 변수 x의 값 : %d\n", x);
return 0;
}실행 결과
extern 변수 x와 b의 값 : 32,8 변경 후 extern 변수 x의 값 : 15
코드 설명
위 프로그램에서는 두 개의 변수 x와 b를 함수 밖에서 전역 변수로 선언했습니다.
extern int x = 32; int b = 8;
이후 main() 함수 내부에서 변수를 extern으로 참조한 뒤 두 변수의 값을 출력하고, x의 값을 15로 변경하여 다시 한번 출력합니다.
extern int b;
printf("extern 변수 x와 b의 값 : %d,%d\n", x, b);
x = 15;
printf("변경 후 extern 변수 x의 값 : %d\n", x);이 예제에서 알 수 있듯이 extern으로 선언된 변수는 파일 전체에서 공유되며, 한 곳에서 값을 변경하면 다른 위치에서도 변경된 최신 값을 그대로 읽게 됩니다. 따라서 여러 소스 파일 사이에서 전역 변수나 함수를 공유해야 할 때 extern은 매우 유용하게 활용됩니다.