[c] 매크로 함수와 인라인 함수의 차이점
매크로 함수와 인라인 함수는 둘 다 코드 실행을 최적화하는 데 사용되지만, 그들 간에는 몇 가지 주요한 차이점이 존재합니다.
매크로 함수
매크로 함수는 전처리기(preprocessor)에 의해 처리되며, 함수 호출 부분이 해당 매크로 함수의 본문으로 직접 대체됩니다. 이는 매크로 호출 시 매개 변수의 값이 평가되지 않을 수 있으며, 디버깅에 어려움을 줄 수 있습니다.
예를 들어, 다음과 같이 매크로 함수를 정의하고 호출할 수 있습니다.
#define SQUARE(x) x*x
int result = SQUARE(3+2); // 전처리기는 이를 3+2*3+2 로 처리
위의 코드에서 result
의 값은 11
이 됩니다.
매크로 함수는 일반적으로 간단한 코드 조각을 대체하는 데 사용되며, 코드 크기를 증가시킬 수 있습니다.
인라인 함수
반면에, 인라인 함수는 호출되는 곳에 함수 코드가 직접 삽입됩니다. 컴파일러가 이를 자동으로 처리하므로, 매크로 함수와 달리 매개 변수를 실제로 계산한 후 인라인 함수를 호출하게 됩니다.
예를 들어, 다음과 같이 인라인 함수를 정의하고 호출할 수 있습니다.
inline int square(int x) {
return x*x;
}
int result = square(3+2); // 3+2*3+2로 계산한 후 인라인 함수 호출
위의 코드에서 result
의 값은 25
가 됩니다.
인라인 함수는 보통 복잡한 코드에 대응하기 위해 사용되며, 코드량이 많이 증가하지 않도록 컴파일러가 최적화합니다. 또한 매크로 함수와는 달리 유형 검사와 범위 검사를 통해 안전하게 사용될 수 있습니다.
결론
매크로와 인라인 함수는 각자의 장단점이 있으며, 프로젝트의 요구에 따라 적절한 방식을 선택해야 합니다. 간단한 코드 대체에는 매크로를, 안전하고 최적화된 함수 호출이 필요한 경우에는 인라인 함수를 선택하는 것이 좋습니다.