C언어 전처리기와 매크로

전처리기(#)는 컴파일 전 소스 코드를 가공하는 역할을 한다.

매크로를 잘 사용하면 코드의 가독성과 유지보수성을 높일 수 있지만, 남용하면 디버깅이 어려워질 수 있다.

전처리기 및 매크로 예시

#include <stdio.h>

// 1. 상수 매크로
#define PI 3.14159
#define MAX_SIZE 100

// 2. 함수형 매크로 (괄호 사용 주의!)
#define SQUARE(x) ((x) * (x))

// 3. 조건부 컴파일
#define DEBUG_MODE

int main() {
    printf("PI: %.2f\n", PI);
    printf("Square of 5: %d\n", SQUARE(5));

#ifdef DEBUG_MODE
    printf("Debug: Program is running in debug mode.\n");
#endif

    return 0;
}

코드 설명:
#define은 단순 치환이므로 함수형 매크로 작성 시 인자와 전체 식에 반드시 괄호를 씌워야 연산자 우선순위 문제를 방지할 수 있다.
#ifdef와 같은 조건부 컴파일을 활용하면 특정 환경(디버그, OS 등)에 따라 코드를 선택적으로 포함할 수 있다.

처음에는 가볍게 훑으려던 C언어 전처리기와 매크로가 생각보다 깊었다.

시작은 가벼웠는데 생각보다 고민이 길어졌다.

포인터를 한 줄씩 따라가면서 하나씩 확인하다 보니 문장으로 읽을 때는 알겠는데, 막상 코드에서 만나면 어디부터 봐야 할지 멈칫했다.

같은 내용을 다른 변수 이름으로 다시 구현했더니 C언어 전처리기와 매크로이 훨씬 또렷해졌다.

C언어 전처리기와 매크로을 한 번에 끝내진 못했지만, 적어도 흔들리는 지점은 분명해졌다.

예전보다 덜 겁난다는 감각이 생긴 게 가장 큰 수확이었는 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts