c 에서 매크로는 메모리에 있는 데이터와 관련된 것이 아니라 코딩한 줄에 직접 관여한다.
#define functionName(p1, p2, p3..) \
내용
이렇게 되어 있다 하자.
함수 이름과 파라미터까지는 그냥 코딩할 때와 마찬가지로 메모리와 연동된다.
그 이후는 글자 그대로 사용된다. 저대로 코드를 입력한게 된다는 말이다.
그래서 자주생기는 실수가 연산자 우선순위이다.
#define functionName(p1, p2) \
p1/p2
이렇게 되어있고 functionName(3+4, 1+2) 를 쓴다고 하자.
그럼 이건 매크로라서 컴파일할 때 3+4/1+2 라고 코딩한것이 된다.
괄호를 안쓴게 되니까 우리가 원하던 결과가 나오지 않는다.
이거가지고 간단한 함수 매크로를 만든 예가 아래이다.
신기방기
댓글 없음:
댓글 쓰기