[c++] 인라인 함수와 매크로 함수의 호출 방식 차이

컴퓨터 프로그래밍에서, 인라인 함수매크로 함수는 유사한 목적을 가지고 있지만, 그 호출 방식에는 몇 가지 중요한 차이가 있습니다. 이러한 차이를 이해하고 작업에 적합한 함수를 선택하는 것은 프로그램의 효율성과 유지보수성에 영향을 미칩니다.

인라인 함수

인라인 함수는 일반 함수와 비슷하지만, 컴파일러에 의해 함수 호출 지점에 함수의 코드가 직접 삽입됩니다. 이는 함수 호출로 인한 오버헤드를 줄이고 실행 속도를 향상시킬 수 있습니다. 인라인 함수는 보통 짧고 간단한 코드에 사용되며, 일반 함수로 전환될 때가 비효율적일 때 적절합니다.

인라인 함수는 보통 헤더 파일에 정의되며, inline 키워드로 표시됩니다. 주로 클래스 내부의 작은 함수들이 인라인으로 선언됩니다.

인라인 함수의 호출 방식은 다음과 같습니다.

#include <iostream>

inline int add(int a, int b) {
  return a + b;
}

int main() {
  int result = add(3, 4); // 직접 함수 내용이 삽입됨
  std::cout << result; 
  return 0;
}

매크로 함수

매크로 함수는 단순한 텍스트 치환 방식으로 동작합니다. 컴파일 전에 매크로 호출문이 해당 매크로 함수의 내용으로 치환되기 때문에 함수 호출 비용이 발생하지 않습니다. 하지만, 이로 인해 코드 중복이 발생할 수 있고, 디버깅이 어려워질 수 있습니다.

매크로 함수는 #define 지시문으로 정의됩니다.

매크로 함수의 호출 방식은 다음과 같습니다.

#include <iostream>

#define ADD(a, b) (a + b)

int main() {
  int result = ADD(3, 4); // 3 + 4 로 치환됨
  std::cout << result; 
  return 0;
}

결론

인라인 함수는 컴파일러에 의해 함수 호출 지점에 함수의 코드가 직접 삽입되므로 실행 속도를 향상시키지만, 매크로 함수는 단순한 텍스트 치환 방식으로 동작하여 함수 호출 비용이 발생하지 않습니다. 그러나 매크로 함수는 코드 중복과 디버깅 어려움을 초래할 수 있습니다. 알맞은 상황에서 적절한 함수 호출 방식을 선택하는 것이 중요합니다.

참고 자료