더북(TheBook)

8.1.2 인터페이스

C 라이브러리에 나오는 인터페이스는 대부분 함수지만 상황에 따라 매크로가 적합하다면 얼마든지 매크로로 구현할 수도 있다. 다음과 같이 작성한 매크로를 5.6.3절에서 본 것과 비교해 보면 이 매크로는 함수와 거의 비슷하다. 그래서 이런 매크로를 함수 같은 매크로(function-like macro)C라 부른다.

#define putchar(A) putc(A, stdout)

앞에서 살펴봤듯이 매크로는 단순히 텍스트만 교체하는 것이다. 텍스트 교체 과정에 매크로 인수가 여러 번 나올 수 있기 때문에 이런 매크로나 함수에 부작용을 초래하는 표현식을 전달하면 좋지 않다. 부작용에 대해서는 TAKEAWAY 4.11에서 설명한 적이 있으므로 이러한 표현이 바람직하지 않은 이유에 대해서는 잘 알고 있을 것이다.

이 장에서 살펴볼 인터페이스 중 몇 가지는 인수나 리턴 값이 포인터로 되어 있다. 포인터 타입을 다루는 방법은 아직 제대로 소개하지 않았지만, 포인터 타입 인수를 0이나 흔히 알려진 포인터로 지정하는 경우가 대다수다. 리턴 값이 포인터인 경우는 오류 상태(error condition)를 표현할 때뿐이다.

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