안녕하십니까. 리습입니다.
지금까지 우리는 많은 것을 배웠습니다. C언어 문법에 대하여 지금까지 배운것만으로도 많은 프로그램을 '구현' 할 수 있습니다. (물론 굉장히 어려운 부분이 많을 겁니다만....) 우리가 지금까지 배운 기본기로 예시 프로그램을 한번 보도록 하겠습니다.
코드 |
#include <stdio.h> int sum ( int a , int b ); int main( void ) { printf("두숫자는 1 과 10 이며 이 두숫자를 더하면 %d 입니다.\n", sum(a, b)); } int sum ( int a , int b ) { return a+b; }
|
결과 |
두숫자는 1 과 10 이며 이 두 숫자를 더하면 11 입니다. |
지금까지 배운것들로 이 코드는 손쉽게 해석 되실 겁니다. 단 맨 위에 #include 는 아직 의문점이 많죠. 단순히 헤더파일을 불러오기 위한 것이다. 라고 설명은 드렸지만 정확하게 저것이 어떻게 역활을 하는지 설명하지는 않았습니다. 왜냐하면 저 # 이라는 것은 엄밀하게 말해서 프로그래밍 문법적인 역활을 하는 것이 아니기때문입니다.(C언어에 포함되어있긴 합니다.) 그럼 저 #의 정체는 무엇일까요. 저 #은 바로 컴파일러에게 명령을 하는 키워드 전처리기 라고 합니다.
#include , ~을 포함해라. |
컴파일러는 우리가 만든 C언어 글을 기계가 알아들을수 있도록 기계어로 번역합니다. 이 과정을 컴파일 (compile) 이라고 하며, 이러한 역활을 하는 프로그램이 컴파일러입니다. 우리가 사용하는 비쥬얼스튜디오나 데브C++ 등이 컴파일을 하는 컴파일러인것입니다. 그런데 컴파일러가 컴파일 작업을 할 때 우리가 여러가지를 지정해줘야 할 필요가 있습니다. 그런 명령들이 필요할때 #을 맨처음에 적어주는 것입니다. 그래서 #을 이용한 명렁어들을 '전처리기' 라고 합니다. 컴파일 전에 처리해줘야하는 일 이라는 의미죠.
그럼 #include 의 의미는 이제 예측이 됩니다. 컴파일러에게 헤더파일을 추가해라 라고 명령을 하는 것입니다. 즉 컴파일을 하기전에 헤더파일을 추가하고 해라 라는 의미입니다. 실제로 #include가 헤더파일에서 하는 작업은 별거 아닙니다. 헤더파일을 통체로 .cpp 파일에 복사붙여넣기 하는것입니다.
헤더파일에는 함수의 선언부분이 들어 있고 #include 를 사용하여 헤더파일을 포함시킨다면 컴파일러는 단순히 헤더파일에 있는 코드를 복사하여 #include 가 있는 곳에 붙여넣기 합니다. ( 치환 한다고 보셔도 됩니다. ) 별다른 작업을 하지 않는 거죠. 그냥 이런게 있구나 정도로 넘어가셔도 됩니다 .
전처리기 라는 것은 별거 아닙니다. 컴퓨터를 위해서라기 보단 사람을 위해서 만들어진 것들이 대부분이기 때문이죠. 동작또한 단순히 붙여넣기, 매크로 등 간단합니다. 전처리기에 대한 자세한 사항은 나중에 몰아서 보도록 하고 이번엔 #include 를 알아보는 선에서 마치도록 하겠습니다.
'소프트웨어 > C 언어' 카테고리의 다른 글
[C언어]21. 변수의 특별한 성질들 -2- ( 전역변수로의 외부 모듈 접근 ) (0) | 2013.06.07 |
---|---|
[C언어]20. 변수의 특별한 성질들 -1- ( 지역변수와 전역변수 ) (0) | 2013.06.06 |
[C언어]18. 헤더파일이란 무엇인가 ( 헤더파일을 만드는 법 ) (5) | 2013.06.06 |
[C언어]17. 변수의 계산방법, 연산자에 대하여 알아보자. -5- ( 연산자 우선순위 ) (0) | 2013.06.06 |