[c++] inline

C++/Tips / / 2021. 6. 16. 16:20

1. 인라인 함수[C99~]

=> 내부에서 작성된 코드의 속도와 함수의 장점을 결합하는 방법

=> 함수의 경우 함수가 호출할 때 마다 발생하는 일정량의 성능 오버헤드가 존재

=> inline의 경우 compiler에서 함수를 인라인 함수로 처리하도록 요청하여 함수 overhead를 제거하는 함수

=> 즉, 함수 호출이 아닌 함수 호출부를 함수 내용으로 전환시키는 것

=> but, 내부 루프가 없는 짧은 함수에만 적합하고, 함수가 길거나 여러번 호출시 컴파일된 코드를 크게 만들 수 있음

=> 최근의 경우 compiler가 알아서 inline화 / compiler에서 inline시 손해라고 판단하면 inling 포기

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

int main()
{
	cout << min(5,6) << endl;
    //cout << (5>6 ? 6 : 5) << endl; 와 동일
 	return 0;
}

+ 매크로 변수와의 차이

    -> 매크로의 경우 무시할 수 없고, 타입체크를 무시하고, 유지보수를 어렵게 만들고, namespace를 무시함

//매크로
#define MUL(x,y) ((x)*(y))

 

2. 예시

void prt()
{
	cout << "print" << endl;
}

int main()
{
	prt();
 	return 0;
}

=> 실행 순서

    -> 1. main 시작점

    -> 2. prt 함수 시작점 점프(IP 백업)

    -> 3. stack pointer stack

    -> 4. cout

    -> 5. stack pointer 되돌리기

    -> 6. main 복귀

 

inline void prt()
{
	cout << "print" << endl;
}

int main()
{
	prt();
 	return 0;
}

=> 실행 순서

    -> 1. main 시작점

    -> 2. cout 

 

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

[C++] New_2  (0) 2021.06.21
[C++] Union  (0) 2021.06.18
[C++] Casting  (0) 2021.06.15
[C++] initialization  (0) 2021.06.14
[c++ 14] deprecated  (0) 2021.06.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기