인라인 함수를 의역하면, ‘프로그램 코드라인 안으로 들어가 버린 함수’라는 뜻이다. c 언어의 매크로 함수는 함수의 몸체 부분이 함수의 호출문을 완전히 대체하므로, 인라인 함수의 정의와 일맥상통하는 부분이 있다.

매크로 함수의 장점은 아래와 같다.

  1. 일반적인 함수에 비해 실행속도의 이점이 있다.
  2. 자료형의 제한이 없다

매크로 함수의 단점은 아래와 같다.

  1. 정의하기가 어렵다.
  2. 복잡한 함수를 매크로의 형태로 정의하는 데 한계가 있다.

인라인 함수는 매크로 함수의 장점을 취하고 단점은 제거하기 위해 만들어진 개념이다.
인라인 함수는 키워드 inline을 사용해 아래와 같이 선언된다.

 
#include <iostream>
 
inline int SQUARE(int x) //인라인 함수의 몸체 부분은 호출문을 대체한다.
{
	return x*x;
}
 
int main(void)
{
	std::cout<<SQUARE(5)<<std::endl;
	std::cout<<SQUARE(12)<<std::endl;
 
	return 0;
}
 

단, 인라인 함수는 매개변수의 자료형을 정의해야 하므로 매크로 함수의 모든 장점을 가질 수는 없다. 템플릿과 인라인 함수를 같이 사용하면 이러한 한계를 극복할 수 있다.

매크로를 이용한 함수의 인라인화는 전처리기에 의해 처리되지만, 키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해 처리된다. 따라서 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 컴파일러는 이 키워드를 무시해버리기도 한다. 또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.

또한 키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해 처리되기 때문에, 인라인 함수의 원형 선언과 정의는 같은 파일 안에 위치하여 컴파일러가 동시에 참조할 수 있게 해야 한다.


참고자료

윤성우의_열혈_cpp_프로그래밍