소프트웨어/C 언어

[C언어]21. 변수의 특별한 성질들 -2- ( 전역변수로의 외부 모듈 접근 )

리습 2013. 6. 7. 06:00

안녕하십니까. 리습입니다.


전역변수라는 것은 어떤 모듈 내에서 모든 함수들이 접근을 할수 있는 변수 였기 때문에 매우 편리한 변수였습니다. 때문에 함수끼리 데이터를 교환할때 전역변수를 통해서 할수도 있었죠.( 물론 함수간의 데이터 교환은 직접적으로 매개변수를 주는것이 더 좋지만 말입니다.) 그럼 한번 이런 전역변수를 확장시켜 보도록 하겠습니다. 특정 모듈이 아닌 프로그램을 구성하는 모든 모듈에서 한 전역변수에 접근할수 있도록 만들어 보도록 하겠습니다.  그럴때 우리는 지정자(Specifier) 라는 것을 사용합니다.


 변수의 특징을 결정하는 지정자. 


 지정자는 변수의 맨 앞에 붙어서 그 변수의 성격을 정해주는 키워드 입니다. 원칙적으로 함수내에 지역변수를 선언할때에는 auto int a  이런식으로 작성을 해야합니다. 이때 맨앞에 있는 auto 라는 키워드가 지정자인것이죠. 하지만 이 auto 키워드는 생략이 가능하기 때문에(컴파일러가 함수 내부의 변수는 모두 auto로 처리합니다.) 우리가 굳이 쓸 필요는 없습니다. 


 이런 지정자중에선 전역변수를 모든 외부 모듈에서도 접근할 수 있도록 만들어주는 키워드도 있습니다. 바로 extern 이란 키워드입니다.



 extern 키워드 


 일반적으로 전역변수를 사용하면 같은 cpp 파일, 모듈 내에서만 사용할 수 있습니다.


 하지만 extern 키워드를 전역변수 앞에 선언해준다면 저런식의 외부 참조도 가능합니다.


 때때로 외부 모듈에서도 이렇게 변수를 참고할 필요가 있을때 extern을 사용하면 유용합니다. 하지만 주의할 것이 있습니다. 외부모듈까지 전부 사용할수 있는 변수가 되기 때문에 자칫 접근을 잘못하면 프로그램 전체에 영향을 주는 큰 버그가 생길수도 있습니다 때문에 사용에 주의가 필요합니다. 될 수있으면 사용 안하시는걸 추천드립니다.