전 처리기
㈜ 초보의 글이므로 잘못되거나 서투른 표현이 있을 것입니다. 그러나 읽는 분을 위해 최선을....
◆ 결론 : 간단한 개념이다.
1. 전처리기
이름 그대로 소스가 시작되기 전, 맨 앞 부분에 적히는 내용으로 편의를 위해 사용되는 기능인데 그 내용도 쉽다. 다음과 같은 3가지 유형이 있다고 보겠다.
1) 매크로 정의
(1) 인수가 있을 때
#define 매크로명(가인수1, 가인수2) 대치할 문자열
예) #define KEYDOWN(State, KeyID) (State[KeyID] & 0x80) // 키보드 관련 매크로
소스에서 많이 볼 수 있는 것 들이다. 매크로란 복잡한 내용을 보다 효율적으로 다룰 수 있도록 하기 위해서 사용하는 것인데 매크로명으로 KEYDOWN 이라고 이름 지었고, 이 경우에는 ()안에 인수가 들어가 있는 다소 복잡한 형태를 보이는 매크로다. 앞과 뒤를 나누어 생각하는데 앞의 ()에 있는 내용은 - 간단한 꼴로 - 이것이 본 소스에서 사용하게 된다. 그러나, 실제로 작동하는 내용은 뒤의 - 상대적으로 긴 - (State[KeyID] & 0x80)이 쓰인다는 뜻이다.
(2) 인수가 없을 때
#define AGE 20
위의 ()안에 인수가 있는 것과는 달리 ()안의 인수가 없는 간단한 매크로이다. AGE라는 표현이 소스에서 사용되지만 실제로 작동되는 것은 20의 숫자다. 매크로를 사용할 때의 이점이란 20의 숫자를 다른 숫자로 바꾸고 싶을 때라면 바로 여기서 원하는 숫자만 간단하게 바꾸어 놓으면 전 소스에서 자동적으로 원하는 숫자로 작동되므로 아주 편리하다. 만약, 20이 여러군데 사용되었을 때 숫자를 바꾸려고 한다면 소스 여기 저기를 점검하여 일일이 고쳐주어야 겠지만 ....이처럼 매크로를 사용할 때는 바로 이곳 한 곳만 원하는 숫자로 교체하기만 하면 되기 때문이다.
2) 파일을 포함시킬 때
#include <stdio.h>
너무 간단한 내용이므로 설명이 불필요 할 것이다. C는 프로그래머를 위해 - 함수처럼 - 많은 헤더 파일들도 준비해 두었다. 그래서 이들이 필요하다면 <>로 표시하여 끌어다 쓴다. 이때 C가 준비해 둔 소위 표준 헤더 화일은 < >로 표현하며, 내가 만든 헤더 화일은 " "라는 표현을 사용한다.
3) 기타 지시어
(1) #undef
지정했던 매크로를 해제시키고 싶을 때 #undef을 사용하게 된다.
#define MAX 100 // 이렇게 매크로를 선언했다가
#undef MAX // 해제하고 싶으면 이렇게 쓰면 된다.
(2) 조건부 컴파일
많이 나오는 표현은 아닌 편이지만, 기본 틀은 다음과 같은 형태를 취한다.
#ifdef 옵션명 |
우선 #ifdef 옵션명을 사용하여 옵션명이 선언되어 있다면 코드 1 부분을 컴파일하고, 만약 그렇지 않다면 코드 2를 컴파일하는 것임. 끝에는 #endif를 쓴다.
(끝)

Comments List