C++ Extern
카테고리: C++
C++ extern은 전역으로 선언된 변수, 함수, 템플릿에 적용될 수 있는 키워드이다.
extern이라는 의미 그대로 파일 외부에 해당 extern으로 선언된 것을 연결하여 주는 역할을 한다.
extern은 선언된 방식에 따라 4가지의 다른 의미를 가질 수 있다:
- non-const 전역 변수에 사용되었을 때, 해당 변수가 다른 파일에서 정의 되었음을 의미한다. 해당 변수를 정의하는 파일을 제외하곤 변수를 사용하는 모든 파일에서 extern으로 호출해 주어야 한다.
- const 전역 변수에 사용되었을 때, 동일하게 해당 변수가 외부로 연결 되었음을 의미하며, 이 경우 모든 파일에서 extern으로 정의해주어야 한다.
- extern C로 사용되었을 때, 동일한 extern의 의미를 갖지만 C의 호출 규칙을 사용한다는 것을 의미한다.
- 템플릿에 사용되었을 때, 해당 템플릿이 다른 곳에서 인스턴스화 되었음을 의미한다. 즉, 새로운 인스턴스를 만들어 사용하기 보다 이미 다른 파일에 존재하는 인스턴스를 가져와 사용하라고 컴파일러에게 알릴 수 있다.
주의해야할 점
extern은 다른 파일의 변수를 가져오기 때문에 중복 정의를 조심하여야 한다.