매크로함수는 확장 후에 다른 연산자와의 추가적인 연산에 의해서 부작용이 생길 수 있다.
#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)) // 제곱을 구하는 매크로함수 정의
'C 언어' 카테고리의 다른 글
| C언어로 자막 파일 수정하기 (0) | 2021.01.02 |
|---|---|
| C언어를 이용해서 Log 함수 계산하기 (0) | 2021.01.01 |
| 자료구조 연결 리스트 함수들 정리 (0) | 2020.12.31 |
| 텍스트 파일의 단어를 세는 프로그램 (C 언어 사용) (0) | 2020.12.31 |
| C 언어로 방정식의 해를 구하기 (Bisection method) (0) | 2020.12.31 |
댓글