| [ CnUnix ] in KIDS 글 쓴 이(By): mimosa (mimosa) 날 짜 (Date): 2002년 7월 17일 수요일 오전 02시 18분 03초 제 목(Title): Re: 소스파일이 여러개일때 전역변수 선언 초창기의 코딩방식은 하나의 파일에 모든것을 우그려넣는 방법이었습니다. 이런방식은 짧은 길이의 코딩에는 상관이 없으나 내용이 복잡하고 동시에 많은 사람이 같이 작업을 진행할 경우는 좋은 방법이 아니었습니다. 해서 관련있는 부분별로 module식으로 떨어져 나와 각자 별도의 파일에 코딩을 하고 컴파일도 각각하고 object파일을 링크해서 하나의 실행파일을 만드는 modular programing을 하게되었습니다. modular programing은 여러모로 장점이 있었습니다. 여러명이 동시에 개발을 진행할 수 있을 뿐만 아니라 방대한 소스중 일부분을 고친경우 그 일부분에 해당하는 부분만 다시 컴파일해서 링크를 하면 되었기때문에 개발 사이클이 대폭감소하였습니다. 프로그램언어중에 modular programing을 최초로 적용한 것이 C언어 랍니다. C 언어는 modular programing을 지원하기위해 extern 키워드를 도입하였습니다. 만약 a.c, b.c, c.c에서 int x라는 전역변수를 같이 쓰고자 하는 경우는 a.c int x --> define b.c extern int x --> declare c.c extern int x --> declare 즉 define은 한번만 declare는 원하는 만큼 사용할 수 있도록 한것입니다. b.c만을 컴파일하는 경우 컴파일러는 x가 어디 있는 놈인지 알지 못합니다. 보통은 어디있는지 알지 못하는 놈이면 불평을 하는게 정상이나 extern이라는 키워드가 불평을 잠재우지요 내용인즉 x가 define된곳은 나중에 알려줄테니 잠자코 있어라 입니다. object파일들이 모두 생성된 후에 link editer를 이용해서 하나의 실행파일을만드는데 이작업을하면서 link editer가 x의 위치를 알려주고 합치는 작업을 합니다. 여러 파일에 사용하는 전역변수를 선언하는 경우 이런 사용 방법을 추천합니다. a.c, b.c, c.c 에서 int x를 사용하고자 하는 경우 h.c를 별도로 만들고 여기에 int x 를 넣습니다. 그리고 .h 파일에는 extern int x를 넣습니다. 헤더파일에는 declare만 넣는것이 좋습니다. 아 또 한가지 여러사람이 코딩하다보니 본의 아니게 변수명이 같게 될 경우가 생기는대 이때는 static이라는 키워드를 사용해서 해결합니다. static이라는 키워드를 사용하면 그 변수의 사용범위는 해당파일로 국한됩니다. ----------------------------ooO0o-- * . ^ --o0Ooo---------------------------- 잠못들때 파도소리가 귓속에서 울릴때 우리는 잃어버린 전설을 찾아 떠나야한다 |