더북(TheBook)

TAKEAWAY 5.46 복합 리터럴은 오브젝트를 정의한다.

복합 리터럴은 다음을 주의해야 한다.

복합 리터럴은 ICE에 적합하지 않다.

예제처럼 이름 있는 상수를 선언하려면 T 타입을 반드시 const로 한정(const-qualified)C해야 한다. 그래야 최적화기(optimizer)가 매크로 부분에 대한 바이너리 코드를 더 잘 생성할 수 있다.

복합 리터럴의 () 부분과 매크로 이름 사이에 반드시 공백이 있어야 한다. 앞에서는 /**/ 주석으로 이 점을 표시했다. 이렇게 하지 않으면 함수 같은 매크로(function-like macro, 매크로 함수)를 정의하는 것으로 해석된다. 함수 같은 매크로는 8.1.2절에서 정식으로 소개한다.

매크로 정의를 여러 줄에 걸쳐 작성할 때는 중간 줄 끝마다 백스페이스 문자 \를 넣는다.

매크로 정의 끝에는 ;을 붙이면 안 된다. 매크로는 어디까지나 텍스트 교체 메커니즘이라는 사실을 명심하기 바란다.

TAKEAWAY 5.47 매크로에 문장 끝을 표시하는 세미콜론을 넣지 않는다.

코드의 가독성을 높이도록 매크로를 읽기 쉽게 작성한다.

TAKEAWAY 5.48 줄이음 문자(continuation marker)는 오른쪽 끝에 맞게 들여 쓴다.

예제를 보면 알 수 있듯이 이렇게 작성하면 매크로 정의 부분이 눈에 띈다.

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