본문 바로가기
Programming/C, C++

LV2 C++ 인라인(Inline) 함수

by Dev_카페인 2022. 9. 13.
반응형

[lv2/C++] 인라인(Inline) 함수

 

인라인 함수란 정의된 함수들이 호출한 부분에 삽입되어 실행될 수 있도록 하는 함수이다. 일반적으로 정의된 함수는 호출되면 호출한 부분의 주소를 가지고 있다가 함수처리가 완료되면 기억했던 주소로 되돌아가는 과정을 거치지만 인라인 함수는 컴파일 하면서 호출 부분에 직접적으로 삽입되어 실행되기 때문에 실행속도가 빨라진다는 장점이 있다. 하지만 최신 컴파일러는 인라인 함수를 사용하겠다고 명시하지 않아도 적절하다고 생각되면 호출 부분에 자동으로 삽입하기도 하며 인라인 함수를 사용하겠다 해도 적절하지 않다고 생각되면 삽입하지 않아서 지금은 직접적으로 사용하는 경우는 드물다. 다음은 인라인 함수가 어떻게 변하게 되는지 컴파일 전 후 과정을 예시로 든 코드이다.

// 인라인 함수 원형
#include <iostream>

using namespace std;

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

int main()
{
	int a = sample(3, 4);
	int b = sample(4, 5);

	cout << a << endl;
	cout << b << endl;

	return 0;
}
// 인라인 함수 처리
#include <iostream>

using namespace std;

int main()
{
	int a = 3 + 4;
	int b = 4 + 5;

	cout << a << endl;
	cout << b << endl;

	return 0;
}

 

일반적으로 함수를 호출하게되면 다시 되돌아올 복귀 주소를 저장하고 함수를 처리한 후 복귀주소를 꺼내 돌아오게 된다. 인라인 함수를 사용하게 되면 스택에 주소를 저장하고 꺼내오는 과정이 없어지는 셈이다. 물론 함수를 처리하고 돌아오는 과정에서 좀 더 많은 과정들이 오버헤드로 발생하게 되지만 인라인 함수가 갖는 장점을 알기에는 충분하다고 생각한다.

반응형