언어/C++

[C++] Inline 함수

겜도리도리 2022. 7. 19. 23:02
반응형

개요

일반적으로 함수가 호출되면, 함수에 전달할 매개변수와 함수 호출이 끝난 뒤 돌아갈 반환 주소값을 스택에 저장하게 된다. 그 후에 프로그램 제어가 함수의 위치로 넘어오고, 함수 내에 선언된 지역 변수도 스택에 저장한다.

 

C++에서 함수를 호출하면 위와 같은 복잡한 과정을 거치게 되므로, 함수를 호출하는데에 약간의 시간이 소요된다. 함수 실행 시간이 길다면 함수 호출 시간이 차지하는 부분이 미미하지만, 함수 실행 시간이 짧다면 함수 호출 시간이 함수 실행 시간보다 더 길어지는 배보다 배꼽이 큰 상황이 발생할 수 있다.

 

C++에서는 이러한 경우에 사용할 수 있는 인라인 함수(Inline function)을 제공한다. 인라인 함수는 호출되었을 때 일반적인 함수 호출의 과정을 거치지 않고, 인라인 함수의 모든 코드를 호출된 자리에 삽입하는 식으로 작동한다.

앞선 방식에서 함수 호출에 걸리는 시간은 절약되지만, 함수 호출로 얻을 수 있는 이점은 잃게 된다. 그러므로 코드량이 매우 적은 함수만을 인라인 함수로 선언하는 것이 좋다.

선언

inline int ExampleFunc()
{
	...
	return 0;
}

앞서 말했듯 코드량이 적은 함수를 인라인 함수로 정의하므로, 함수를 선언할 때 함수의 본문까지 함께 정의하는 경우가 많다.

 

인라인 함수에서는 재귀 호출이 허용되지 않는다.

반응형

'언어 > C++' 카테고리의 다른 글

[C++] string 덧셈  (0) 2022.09.17
[C++] 상수 및 비상수 멤버 함수에서 코드 중복 현상 피하기  (0) 2022.07.22
[C++] string 한글 출력  (0) 2022.07.15
[C++] 프로그램 실행 순서  (0) 2022.07.13
[C++] 가상 함수 (virtual)  (0) 2022.07.10