매크로와 전처리기 Macro, Preprocessor

Gogi·2023년 5월 29일

C언어 기초 목록

목록 보기
22/23

컴파일 하기 전에 처리

매크로(Macro)와 전처리기(Preprocessor)는 소스 코드를 컴파일하기 전에 사전에 처리되는 단계이다. 전처리기는 소스 코드의 일부를 수정하거나 다른 코드로 대체하여 최종적으로 컴파일러에 전달하는 역할을 한다. 주로 코드의 재사용성과 간결성을 높이는 데 사용된다.


개념 설명

매크로는 전처리기에 의해 처리되는 이름과 값으로 구성된 식별자다. #define 지시문을 사용하여 정의되며 매크로 정의는 컴파일러가 소스 코드를 처리하기 전에, 매크로의 이름을 해당 값 또는 표현식으로 대체하는 작업을 수행한다. 이를 매크로 치환(Macro Substitution)이라고 한다.

전처리기는 매크로 처리 외에도 다른 기능을 수행할 수 있다. #include 지시문을 사용하여 헤더 파일을 포함하거나 #ifdef #ifndef #endif 등의 조건부 컴파일 지시문을 사용하여 조건부 코드 실행 등을 수행할 수 있다.


사용 예시

#define PI 3.141592
#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main() 
{
    double radius = 5.0;
    double dule = 2 * PI * radius;

    int x = 10;
    int y = 20;
    int maxValue = MAX(x, y);

    return 0;
}

전처리기는 컴파일 전에 PIMAX(x, y)를 각각 3.141592((x) > (y) ? (x) : (y))로 대체한다.

PI는 매크로로 정의된 상수 값이고 MAX는 매크로로 정의된 '매크로 함수'다. 간단한 수식은 구현이 가능하지만 실제 함수처럼 복잡한 구조로는 만들 수 없다. 위에서 말한 #ifdef #ifndef #endif 등을 활용해 조건문도 구현 가능하다.


주의사항

  • 지나친 축약, 부적절한 사용은 코드의 가독성을 해치고 버그를 발생시킬 수 있므르 주의
profile
C, C++, C#, Unity

0개의 댓글