c 코딩 - static 전역변수 의미

static을 주는 것과 안 주는 전역 변수에는 중요한 차이가 있습니다.


1. static 전역 변수

  • 파일(translation unit) 내부에서만 접근 가능합니다.
  • 다른 소스 파일에서 extern으로 참조할 수 없습니다.
  • 링크 시 심볼 충돌이 발생하지 않습니다.
  • 캡슐화 효과가 있어, 해당 파일 내부에서만 사용하는 전역 변수에 적합합니다.

예시:

static int counter = 0; // 이 파일에서만 사용 가능

2. static이 없는 전역 변수

  • 프로그램 전체(모든 소스 파일)에서 접근 가능합니다.
  • 다른 파일에서 extern으로 선언해서 사용할 수 있습니다.
  • 여러 파일에서 같은 이름의 전역 변수가 있으면 링커 에러가 발생할 수 있습니다.

예시:

int counter = 0; // 다른 파일에서 extern int counter;로 접근 가능

3. 정리

  • static: 파일 내부 전용(외부 접근 불가, 캡슐화)
  • static 없음: 프로젝트 전체에서 접근 가능(외부 접근 허용)

권장:

  • 외부에서 접근할 필요 없는 전역 변수는 항상 static을 붙여서 파일 내부로 한정하는 것이 좋습니다.
  • 외부에서 접근해야 한다면 extern과 함께 사용하세요.

요약:
static을 붙이면 파일 내부 전용 전역 변수가 됩니다.
안 붙이면 프로그램 전체에서 접근 가능한 전역 변수가 됩니다.