링커, 로더, 실행 파일
C 언어에서 「extern int count;」라고 썼을 때의 의미로 올바른 것은?
- Acount라는 변수가 다른 어딘가에서 정의되어 있음을 선언하며, 여기서는 영역을 확보하지 않는다
- Bcount라는 변수를 새로 만들고 0으로 초기화한다
- Ccount라는 변수를 이 파일 바깥에서 보이지 않게 한다
정답과 해설 보기
정답: A. count라는 변수가 다른 어딘가에서 정의되어 있음을 선언하며, 여기서는 영역을 확보하지 않는다
extern은 「이 이름의 변수는 다른 파일 등에서 정의되어 있다」라는 선언으로, 메모리 영역은 확보하지 않습니다. 컴파일러는 count의 주소를 모른 채 참조하는 명령을 만들고 그 위치를 재배치 정보에 기록합니다. 링커가 다른 파일에 있는 「int count = 0;」 같은 정의와 연결해 주소를 정합니다. 헤더 파일에 extern 선언을 쓰고, 정의는 하나의 소스 파일에 두는 것이 기본입니다.
- A. 올바릅니다. 선언일 뿐이며 정의는 다른 곳에 있습니다.
- B. 영역을 확보하는 것은 정의인 「int count;」 등입니다.
- C. 바깥에서 감추는 것은 static입니다.