Skip to content

Latest commit

 

History

History
101 lines (82 loc) · 2.79 KB

15.md

File metadata and controls

101 lines (82 loc) · 2.79 KB

C언어 기초 강의로써 마지막이 찾아왔습니다.
여기까지 어떻게든 따라 오신 여러분들께 경의를 표합니다.

솔직히 저도 이걸 15강까지 쓸 거라고는 생각을 못 했는데
결국 이걸 여기까지 끌고 와 완강을 하게 되는군요.

분명 대부분의 요소들을 생략하고 기본 중의 기본만 들고 왔는데 말이죠.
이걸 여기까지 악으로 읽어 오신 여러분들께 다시 한 번 경의를 표합니다.
그래서 오늘은 이거로 끝이냐고요? 그럴 리가요.
딱 두 가지만 하고 끝냅시다. #if하고 #ifdef라는 건데,

#if

코드를 컴파일 하기 전에 바꾸는 전처리기들은
사용자의 필요에 따라 코드의 흐름 자체를 바꿀 수 있다는 점에서 상당히 유용합니다.
#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라는 건데,

#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
}

#ifdef, #ifndef

A가 정의되었는가, A라는 키워드를 일전에 만들었는가를 묻고 싶을 때 쓸 수 있는 게 있습니다.
defined라는 매크로인데, A가 존재하는지 확인할 수 있죠.

#define A
#if defined(A)
// A는 있어요!
#endif

하지만 이건 너무 길죠.
#ifdef#ifndef로 줄일 수 있습니다.

#define A
#ifdef A
#else
#endif

return 0;

지금까지 C언어 강의를 수강해 주셔서 감사합니다. 이제 다음 시간까지 CLI 기반 계산기 하나 만들어 오시고요.