Extern으로 다른 파일 범위의 전역 변수 사용하기

  • 3 minutes to read

외부 (extern) 변수

외부 변수(external variable)란 여러 개의 소스 파일이 존재할 때, 각 소스 파일이 가지고 있는 변수 중에서 다른 소스 파일에서도 접근 가능한 변수를 의미합니다. 다른 소스 파일에서 선언한 변수를 다른 소스 파일에서 사용하기 위해 extern 키워드를 사용합니다.

외부 변수는 전역 변수(global variable)와 지역 정적 변수(local static variable)로 나눌 수 있습니다. 전역 변수는 함수 밖에서 선언된 변수이며, 프로그램이 시작될 때부터 종료될 때까지 메모리에 상주하며, 모든 함수에서 접근 가능합니다. 지역 정적 변수는 함수 안에서 static으로 선언된 변수로서, 해당 함수가 호출될 때 생성되어 프로그램이 종료될 때까지 메모리에 상주하며, 함수 안에서만 접근 가능합니다.

외부 변수는 여러 개의 소스 파일에서 공유할 수 있는 변수이기 때문에, 프로그램이 커질수록 프로그램의 구조와 관리가 어려워지는 단점이 있습니다. 따라서 외부 변수의 사용은 가능한 지양해야 합니다.

다음은 외부 변수를 사용하는 간단한 데모 예제입니다.

코드: external_variable.c

#include <stdio.h>

int count = 0; // 전역 변수(외부 변수) 선언

void increment()
{
    extern int count; // 전역 변수 사용
    count++; // 전역 변수 값 증가
}

int main(void)
{
    printf("count = %d\n", count); // 초깃값 출력
    increment(); // 함수 호출
    printf("count = %d\n", count); // 변경된 값 출력

    return 0;
}
count = 0
count = 1

extern 키워드로 다른 파일의 전역 변수를 사용하기

extern으로 다른 파일 범위의 전역 변수를 사용하는 방법에 대해 살펴봅시다.

extern_global.c 파일에서 전역 변수를 정의하고, extern_main.c 파일에서 extern을 사용해 extern_global.c 파일에서 정의한 전역 변수를 참조하는 방법입니다.

// extern_global.c
#include <stdio.h>

int global_variable = 10;

void print_global(void)
{
    printf("global_variable: %d\n", global_variable);
}
// extern_main.c
#include <stdio.h>

extern int global_variable;
extern void print_global(void);

int main(void)
{
    printf("global_variable: %d\n", global_variable);
    print_global();
    return 0;
}
global_variable: 10
global_variable: 10

위 코드처럼, extern을 사용하면 다른 파일에서 정의된 변수를 참조하여 프로그램의 구조화와 재사용성을 높일 수 있습니다. 그러나 extern 변수 사용은 신중하게 관리되어야 하며, 대규모 프로그램에서는 모듈화와 캡슐화를 통해 변수 접근을 관리하는 것이 바람직합니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com