더북(TheBook)

5.6.3 매크로

아쉽게도 C 언어에서 상수 선언을 위해 정식으로 지원하는 타입은 signed int뿐이다. 그래서 C 언어는 프로그램 코드를 텍스트 단위로 교체하는 매크로(macro)C라는 강력한 메커니즘을 제공한다. 매크로는 전처리기(preprocessor)C#define으로 정의한다.

# define M_PI 3.14159265358979323846

매크로를 이렇게 정의하면 프로그램 코드에 M_PI라고 나온 부분을 double 타입 상수로 교체한다. 매크로 정의는 다음과 같이 다섯 부분으로 구성된다.

1. # 문자: 현재 줄에서 공백을 제외한 첫 문자는 반드시 이 문자로 시작해야 한다.

2. define 키워드

3. 선언할 식별자(예제의 M_PI)

4. 교체할 텍스트(예제의 3.14159265358979323846)

5. 매크로 정의를 끝내는 줄바꿈 문자

이처럼 매크로라는 텍스트 교체 방식을 이용하면 unsigned, size_t, double 타입의 상수를 선언할 수 있다. 참고로 size_t, SIZE_MAX의 경계값을 비롯한 여러 시스템 속성(EXIT_SUCCESS, false, true, not_eq, bool, complex 등)은 구현마다 값이 다르다.

C 표준의 예제에 나온 매크로는 소프트웨어 프로젝트에서 흔히 사용하는 관례를 완벽히 따르고 있지 않다. 일반적으로는 이보다 엄격한 관례를 적용해서 매크로를 다른 코드와 명확히 구별한다.

TAKEAWAY 5.45 매크로 이름은 모두 대문자로 적는다.

레벨 3에 도달하기 전까진 특별한 이유가 없는 한 이 규칙을 반드시 지킨다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.