매크로 함수는 컴파일 이전에 코드가 변환되기 때문에 일반 함수보다 속도가 빠릅니다. -> 일반 함수가 가지고 있는 호출 과정이 없기 때문에 속도에서 좋은 성능을 나타낸다. 하지만 매크로 함수로 인해 디버깅의 어려움이 있을 수도 있습니다. ex) #define max(x,y) ((x)>(y)?(x):(y)) 이는 max함수를 매크로 함수로 정의한 것입니다. 1. 첫번째 문제 하지만 개발자의 실수로 바깥 괄호를 빠뜨리고 매크로 함수를 정의했다고 가정하게된다면 #define max(x,y) (x)>(y)?(x):(y) "2*max(3,2)" 이라는 수식은 -> "2*(3)>(2)?(3):(2)"로 변환하게 되고 결과 값은 3이 나옵니다. 6을 예측했지만 3이나오게 되고 이를 디버깅하기는 찾기가 어렵습니다. 2..