회신: 75.4 스왑매크로
, 도장_ 관리자님이 작성본문을 잘 보면
if (num1 == 10)
SWAP(num1, num2, int);
else
printf("10이 아님\n");이러한 코드에 do while {}을 쓰지 않은 SWAP 매크로를 쓰면 에러가 발생합니다. 컴파일이 되지 않습니다.macro.c(19): error C2181: if와 짝을 이루지 않는 잘못된 else문입니다.
그래서 본문을 보면 마지막에 다음과 같이 설명이 되어 있습니다.
Unit 75.4를 천천히 읽어보세요.
----
이 코드가 전처리기를 거치면 다음과 같이 } (닫는 중괄호) 뒤에 ; (세미콜론)이 붙어서 컴파일 에러가 발생합니다.
if (num1 == 10)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}; // 세미콜론 때문에 컴파일 에러가 발생
else
printf("10이 아님\n");