본문 바로가기
2학년 2학기/c언어

14-2장 함수 매크로

by kkkkk1023 2024. 12. 2.

함수 매크로

: 인자를 받아서 함수처럼 동작하는 매크로이다.

 

 

 

함수 매크로의 예시

#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