함수 매크로
: 인자를 받아서 함수처럼 동작하는 매크로이다.
함수 매크로의 예시
#define SUM(x, y) ((x) + (y))
#define AVERAGE(x, y, z) (( (x) + (y) + (z) ) / 3 )
#define MAX(x,y) ( (x) > (y) ) ? (x) : (y)
#define MIN(x,y) ( (x) < (y) ) ? (x) : (y)
[사용 방법]
int v = SUM(3, 4)
// v는 7
‼️ 함수 매크로 사용시 주의할 점 ‼️
1. 인자에 괄호 사용하기
#define SQUARE(x) x*x
int main(){
int v = SQUARE(3+4)
//원하는 결과: 49
//실제 결괴 -> 3 + 4 * 3 + 4 = 3 + (4 * 3) + 4 -> 19
}
인자에는 괄호를 꼭 사용해야한다! 만약에 인자를 사용하지 않으면 아래와 같이 로직 오류가 발생할 수 있다.
따라서, 로직오류가 나지 않도록 함수 매크로를 사용할 때는 괄호를 반드시 작성해야한다.
2. 인자로 증감 연산자는 사용하지 않기
#define SQUARE(x) x*x
int main(){
int v = SQUARE(++4)
//원하는 결과: 5 * 5 -> 25
//실제 결괴 -> ++4 * ++5 = 5 * 6 -> 30
}
인자 내부에 증감 연산자를 사용하면 인자를 여러개 사용하는 경우, 개수 만큼 증감되기 때문에 사용하지 않는 것이 좋다.
'2학년 2학기 > c언어' 카테고리의 다른 글
14-4장 #if (0) | 2024.12.02 |
---|---|
14-3장 #ifdef (0) | 2024.12.02 |
14-1장 전처리기와 단순 매크로 (0) | 2024.12.02 |
13-12장 다차원 배열의 동적 할당 ⭐⭐⭐ (0) | 2024.11.26 |
13-11장 Wild pointer (0) | 2024.11.26 |