본문 바로가기
C 언어

매크로함수를 활용한 프로그램

by treeCoder 2020. 12. 31.

매크로함수는 확장 후에 다른 연산자와의 추가적인 연산에 의해서 부작용이 생길 수 있다.

#define MUL(x, y) x*y
printf(“%d₩n”, 30/MUL(2, 5)); // 전처리 되기 전의 코드
printf(“%d₩n”, 30/2*5); // 전처리 된 이후의 코드, 나눗셈이 먼저 연산 된다!

• 확장 후의 부작용을 막기 위해서 확장문자열에 괄호를 사용한다.
#define MUL(x, y) ((x)*(y)) // 확장문자열의 각 문자를 모두 괄호로 감싼다.
printf(“%d₩n”, 30/MUL(2, 2+3));
printf(“%d₩n”, 30/((2)*(2+3)));

#define SQUARE(x) ((x)*(x))  // 제곱을 구하는 매크로함수 정의

댓글