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 |