카테고리:

C++ extern은 전역으로 선언된 변수, 함수, 템플릿에 적용될 수 있는 키워드이다.
extern이라는 의미 그대로 파일 외부에 해당 extern으로 선언된 것을 연결하여 주는 역할을 한다.

extern은 선언된 방식에 따라 4가지의 다른 의미를 가질 수 있다:

  1. non-const 전역 변수에 사용되었을 때, 해당 변수가 다른 파일에서 정의 되었음을 의미한다. 해당 변수를 정의하는 파일을 제외하곤 변수를 사용하는 모든 파일에서 extern으로 호출해 주어야 한다.
  2. const 전역 변수에 사용되었을 때, 동일하게 해당 변수가 외부로 연결 되었음을 의미하며, 이 경우 모든 파일에서 extern으로 정의해주어야 한다.
  3. extern C로 사용되었을 때, 동일한 extern의 의미를 갖지만 C의 호출 규칙을 사용한다는 것을 의미한다.
  4. 템플릿에 사용되었을 때, 해당 템플릿이 다른 곳에서 인스턴스화 되었음을 의미한다. 즉, 새로운 인스턴스를 만들어 사용하기 보다 이미 다른 파일에 존재하는 인스턴스를 가져와 사용하라고 컴파일러에게 알릴 수 있다.
주의해야할 점

extern은 다른 파일의 변수를 가져오기 때문에 중복 정의를 조심하여야 한다.