C언어 기초 강의로써 마지막이 찾아왔습니다.
여기까지 어떻게든 따라 오신 여러분들께 경의를 표합니다.
솔직히 저도 이걸 15강까지 쓸 거라고는 생각을 못 했는데
결국 이걸 여기까지 끌고 와 완강을 하게 되는군요.
분명 대부분의 요소들을 생략하고 기본 중의 기본만 들고 왔는데 말이죠.
이걸 여기까지 악으로 읽어 오신 여러분들께 다시 한 번 경의를 표합니다.
그래서 오늘은 이거로 끝이냐고요? 그럴 리가요.
딱 두 가지만 하고 끝냅시다. #if하고 #ifdef라는 건데,
코드를 컴파일 하기 전에 바꾸는 전처리기들은
사용자의 필요에 따라 코드의 흐름 자체를 바꿀 수 있다는 점에서 상당히 유용합니다.
#define
만을 이용해서 여러 상황에 대비해 코드를 '미리' 짤 수 있다는 점에서 유용하죠.
#define PrintAvailable 1
#if PrintAvailable
#include <stdio.h>
#endif
int main() {
#if PrintAvailable
printf("Hello World!");
#endif
return 0;
}
이 코드에서는 미리 정의된 매크로 PrintAvailable
의 값을 확인하고,
그 값이 참일 경우 <stdio.h>를 가져 오고 printf
를 통해 값을 출력하죠.
코드를 사용하는 사람들에 따라서 값을 콘솔에 출력하는 것을 원하는 사람도,
원하지 않는 사람도 있지 않을까요?
그러면 그걸 반자동으로 설정할 수 있게 해 주는 매크로가 있으면 굉장히 편해지지 않을까요?
그럴 것 같습니다.
하지만 우리는 부족합니다.
예로부터 if가 있으면 else도 있어야 하지 않겠어요?
전처리기에도 또한 존재합니다. #else
라는 건데,
사용법 또한 간단해요.
#include <stdio.h>
#define A 1
int main() {
#if A
printf("A is true!");
#else
printf("A is false!");
#endif
}
#if
와 #endif
사이에 #else
만 집어 넣으면 그만입니다.
원한다면 #elif
를 사용하여 추가로 조건을 집어 넣을 수 있죠.
#include <stdio.h>
#define A 0
#define B 1
int main() {
#if A
printf("A is true!");
#elif B
printf("not A but B is true!");
#else
printf("None is true");
#endif
}
A가 정의되었는가, A라는 키워드를 일전에 만들었는가를 묻고 싶을 때 쓸 수 있는 게 있습니다.
defined
라는 매크로인데, A가 존재하는지 확인할 수 있죠.
#define A
#if defined(A)
// A는 있어요!
#endif
하지만 이건 너무 길죠.
#ifdef
나 #ifndef
로 줄일 수 있습니다.
#define A
#ifdef A
#else
#endif
지금까지 C언어 강의를 수강해 주셔서 감사합니다. 이제 다음 시간까지 CLI 기반 계산기 하나 만들어 오시고요.