2010. 2. 21. 02:32
 

프로그램이 만들어지는 과정에는

전처리기 - 컴파일 - 링킹 - 실행파일생성 이런 단계로 이루어져있다.


전처리기
는 앞에 #이 붙은 것들을 처리하는데

특정 함수나 변수가 있는 라이브러리들을 끌어올때 사용한다.


컴파일
은 라이브러리를 참고해서 각각 특정언어로 작성된 코드들을

기계어코드인 오브젝트파일로 바꾸어준다.

extern 키워드는 선언한 변수나 함수가 현재 파일에는 없고 다른곳에 정의된

것이라는 것을 컴파일러에 알려주는 목적으로 사용된다.


마지막으로 링킹과정은 생성된 오브젝트들을 연결을 시켜서 하나의

실행파일로 만드는 과정이다.


컴파일 과정에서 에러가 나지 않았지만 링킹과정에서 에러가 발생하는 경우가 많이 있는데

그것을 컴파일때에 함수 정의나 변수가 없더라도 다른곳에서 선언되었다고 컴파일러가 묵시적으로 이해를 하는데,

링킹과정에서 그 함수, 변수를 못찾아서 에러가 발생하는 경우이다.
(extern으로 .h파일에 변수를 명시적 선언했지만 c파일에서 실질적으로 선언하지 않은경우)

 

extern 으로 선언된 변수는 컴파일러에게 요 변수가 다른곳에서 정의되어 있다는 것을 알려준다.

컴파일 타이밍에 메모리에 잡히지 않고  단지 컴파일러에게 이러한 변수가 있으니 현재 파일을 컴파일 할때 에러를 보내지 말라고 알려주는역할을 한다.

'프로그래밍 기초 > C' 카테고리의 다른 글

헤더파일중복문제  (0) 2010.02.21
Posted by 아몰라