본문 바로가기

C/Objective C/Objective C

Objective C 전역 변수

외부 변수

만일 다음 명령문을 프로그램 초반에(메서드와 클래스 정의 그리고 함수 바깥에서)작성했다면 이 값은 그 모듈 어디서든 참조할 수 있다.

int gMoveNumber = 0;
이 경우에 gMoveNumber가 ‘전역(global)’ 변수로 정의되었다고 말한다. 명명규칙(convention)을 따르면 보통 전역 변수의 첫 글자로 g가 쓰인다. 이를 통해 프로그램 코드를 읽는 사람은 변수의 범위를 알게 된 다.
사실, 변수 gMoveNumber를 이렇게 정의하면 다른 파일에서도 이 값에 접근할 수 있다. 특히 앞의 명령 문은 변수 gMoveNumber를 global 변수만이 아닌 ‘외부’ global 변수로 정의한다.
‘외부’ 변수는 그 값을 다른 메서드나 함수에서 접근하고 도 바꿀 수도 있는 변수다. 외부 변수에 접근하 고 싶은 모듈에서 일반적인 선언 방식과 동일하게 변수를 선언한 다음 그 앞에 extern 키워드를 추가한 다. 이것은 시스템에게 보내는 일종의 신호다. 이렇게 하면 시스템은 다른 파일에서 전역으로 정의된 변수 에 접근해야 한다는 걸 알게 된다. 다음은 gMoveNumber를 외부 변수로 선언하는 방법을 다룬 예제다.

extern int gMoveNumber;
이 선언이 나오는 모듈은 이제 gMoveNumber에 접근하고 값을 수정할 수 있다. 다른 모듈도 파일에 비 슷한 방식으로 extern을 선언하여 gMoveNumber의 값에 접근할 수 있다.