프로그램 도중에 어느파일에서나 공통적으로 사용하고 싶은 전역변수를 원할 때 extern을 통해 변수를 선언하면 됩니다.
C++에서 외부변수 extern을 사용하는 방법은 정리하자면 아래와 같습니다.
1. extern 변수를 사용하고 싶은 파일에 extern 변수를 선언합니다.
-여기서 주의 해야할 점은 extern 변수는 반드시 하나의 파일에서만 초기화 시켜야합니다.
2. extern 변수를 하나의 파일에서만 초기화 합니다.
글로만 보면 정말 간단하지만 주의해야할 사항이 있기때문에 아래 예시를 들어 설명하겠습니다.
사용예시
위에 작성한 프로그램을 설명하자면 아래와 같습니다.
common 헤더파일에 extern int iExtern 변수를 선언합니다.
그리고 common 헤더파일을 각각 main.cpp와 func.cpp에서 include 합니다.
참고로 헤더파일을 include 한다는 것은 단순히 헤더파일에 있는 코드를 include 한 파일에 복사 붙여넣기한다고 생각하면 됩니다.
func.cpp 파일에 iExtern의 값을 출력해주는 Print_iExtern() 함수를 생성합니다.
main.cpp 파일에서 iExtern의 값을 0으로 초기화 해줍니다.
여기서 주의 해야할점은 iExtern의 값을 초기화 해주는 코드는 모든 파일을 통틀어 반드시 한곳에서만 존재해야합니다.
common 헤더에서 위와 같이 extern int iExtern을 선언한 것은 쉽게 얘기하자면,
"iExtern이 존재하기는 해, 근데 어떤건지는 아직 안 알려주지 않을게"라는 뜻으로 생각하는 편이 이해하기 편하실겁니다.
그러므로 main.cpp에서 위와 같이 iExtern의 값을 초기화 한다는 것은 쉽게 얘기하자면,
"아까 내가 common.h에서 선언했던 iExtern 있지? 그거 얘야"라는 뜻으로 생각하면 햇갈리지 않으실 겁니다.
따라서 앞서 말씀드린 주의사항을 다시한번 정리하자면 아래와 같습니다.
1. extern 변수를 사용하고 싶은 파일에 선언한다.
- 여러곳에서 사용하고 싶다면 당연히 사용하고자 하는 파일에서도 해당 변수가 선언이 되어있어야함.
2. extern 변수는 반드시 하나의 파일에만 초기화 해야한다.
출력결과
출력결과를 보면 알 수 있듯이, main에서 iExtern의 값을 5로 수정했는데 func에서도 iExtern의 값이 5로 수정된것을 확인할 수 있습니다.
이처럼 외부변수의 특징을 잘 알고 활용 할 수 있다면 더 효율적인 프로그램을 만들 수 있습니다.
'C++' 카테고리의 다른 글
C++ 포인터 (0) | 2023.11.24 |
---|---|
C++ 정적 변수 (0) | 2023.11.23 |
C++ 헤더 파일에 함수 기능을 구현해 놓지 않는 이유 (0) | 2023.11.09 |
C++ 분할 구현 (헤더 파일) (0) | 2023.11.09 |
C++ 함수 호출(메모리 영역) (0) | 2023.11.05 |