C++ Chapter 7.4 : 인라인 함수

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 7. 함수 : 인라인 함수

일반적인 함수 호출 과정

함수가 호출되면 함수 정의 부분이 있는 코드로 간다. 그리고 리턴 값을 가지고 호출된 곳으로 다시 돌아온다

  • 위 아래 왔다 갔다 하는 이 과정이 많이 반복된다면 속도가 느려질 것이다.
  • inline 키워드를 함수 정의 앞에 붙여주면 이 과정을 줄여주어 속도를 빠르게 하고 최적화를 돕는다.


inline 함수

inline int min(int x, int y)
{
	return (x > y) ? x : y;
}

int main()
{
	cout << min(1, 3) << endl;
	cout << min(15, 30) << endl;
}

inline을 함수 정의 앞에 붙여주면 함수가 아닌 것처럼 작동하게 된다 마치 아래와 같이 작동한다.

inline int min(int x, int y)
{
	return (x > y) ? x : y;
}

int main()
{
	cout << (1 > 3) ? 1 : 3; << endl;
	cout << (15 > 30) ? 15 : 30; << endl;
}

min 처럼 내용이 짧은 함수는 왔다 갔다하기 아까우니까 그냥 함수 내용을 복사해와서 위 코드와 같이 ㅈ작동하는 것 처럼 된다. 마치 함수가 아닌 것 처럼!

  • 함수 바디까지 갔다 와야 하는 과정을 줄여줌


inline 함수 한계

그러나 inline 붙인다고 무조건 이렇게 작동하는게 아니라 컴파일러가 inline으로 작동시켜도 되겠다고 판단한 것만 이런식으로 작동한다. 즉 inline 키워드는 컴파일러에게 권장 사항일 뿐이고 컴파일러는 이 요청을 무시할 수 있다. inline으로 돌리기 힘든 좀 긴 함수라면 inline 붙어도 inline함수처럼 처리 안됨. 또 inline 함수가 너무 많아지면 코드 양도 많아져 복잡해진다. 최적화를 위한 방법 중 하나일 뿐이고 요샌 inline 안붙여도 컴파일러가 알아서 판단해서 inline으로 돌려주기도 한다. 그래서 inline 키워드 붙일 필요가 요샌 없다..!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기