About C++ – “inline function , 인라인 함수란?”
About C++ – “inline function , 인라인 함수란?”
11월 6, 2021
c++에서 함수의 동작 과정
#include <iostream>
int square(int x)
{
return (x*x);
}
int main(void) { // main함수, c++에서 프로그램의 시작점
std::cout << "Result is "<<square(29); // 함수 호출
}
//Result is 841
위의 코드에서, main함수부터 프로그램이 시작하고 그것은 곧 square함수를 만나게 됩니다. 그러면 프로그램이 수행해야 할 부분은 함수가 시작되는 부분 – square(int x)부분으로 옮겨지게 됩니다. 그렇게 해서 반환값을 받아오고, 다시 프로그램을 수행하게 됩니다.
Inline함수
#include <iostream>
using std::cout;
int sqre(int x)
{
return (x*x);
}
int main()
{
cout<<sqre(5)<<"\n";
cout<<sqre(3)<<"\n";
cout<<sqre(2)<<"\n";
}
위의 코드에서 main함수가 시작되고, sqre(5)를 만나면 프로그램은 sqre()함수를 호출하고 리턴값인 25를 받아올 것입니다. 다음 줄에서도, 다다음 줄에서도 똑같은 과정이 반복될 것입니다. 이러한 경우 함수를 호출하고 값을 반환하는데 드는 시간상의 지체인 오버헤드가 발생하게 됩니다.
#include <iostream>
using std::cout;
inline int sqre(int x)
{
return (x*x);
}
int main()
{
cout<<sqre(5)<<"\n";
cout<<sqre(3)<<"\n";
cout<<sqre(2)<<"\n";
}
바로 위의 예제에서 inline이라는 키워드가 추가되었는데, 그것은 이 함수를 인라인 처리하라고 컴파일러에게 알려주는 것입니다. 컴파일러는 위의 코드를 컴파일하여 아래와 같은 기계어 코드를 생성할 것이고, 그것은 함수를 호출하고 리턴값을 받아오는 과정이 생략되어 더 빠르게 실행될 것입니다.
#include <iostream>
using std::cout;
int main()
{
cout<<5*5<< "\n"; //inline
cout<<3*3<<"\n";
cout<<2*2<<"\n";
}