[C++ 언어-막코딩] 20장 인라인(inline) 함수
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘의 주제는 인라인 함수입니다. 인라인 함수는 한마디로 정의 하면 인라인 함수는 컴파일 시 main()함수 내 해당 함수가 선언된 위치에 인라인 함수 내 코딩이 삽입 되어 컴파일 되는 형태라고 생각하시면 됩니다. 매크로 함수와 동일하지요. 그럼 본격적으로 인라인 함수에 대해 알아 볼까요.
1. 인라인(inline) 함수
inline void output(){
cout<<"Hello World!"<<endl;
}
이렇게 output() 함수를 인라인 함수로 선언하게 되면 이 함수가 호출된 위치로 그대로 코드가 삽입 되어 컴파일 됩니다.
예를 들면,
int main(){
output();
output();
}
위와 같이 main()함수로 호출을 할 때 output()함수가 인라인 함수일 경우 이 코드는 컴파일 하면 아래와 같이 컴파일을 수행합니다.
int main(){
cout<<"Hello World!"<<endl;
cout<<"Hello World!"<<endl;
}
이렇게 삽입이 된 상태로 컴파일을 수행합니다.
원래 함수 호출을 하면 호출 함수의 경우 호출 한 위치에서 해당 함수로 점프하게 되고 점프 한 위치에서 동작을 다 수행하고 나면 원위치로 점프하여 되돌아 오게 됩니다. 이렇게 함수 호출시 점프 방식으로 이동하지만 인라인 함수는 그런 점프 방식이 아니라 프로그램 내 호출 함수 위치에 해당 함수의 코드가 그대로 삽입 되게 되는 것이죠.
장점은 점프가 없이 바로 코드가 삽입 되기 때문에 프로그램 동작에서도 바로 해당 위치에서 바로 처리가 이루어지게 되는 장점을 가지고 있어 처리 속도가 빠릅니다.
그럼 함수들을 무조건 인라인 함수로 표현하면 좋을 것 처럼 보이지만 단점도 있습니다. 인라인 함수로 선언하게 되면 이 함수를 여러번 여러 곳에서 호출하게 되면 해당 위치에 전부 인라인 함수 코드가 삽입되게 됩니다. 그러면 당연히 크기는 커져 좀 문제가 있겠죠.
그래서 인라인 함수는 짧은 코드를 가진 함수들을 사용하는 데 사용합니다. 짧은 코드는 프로그램 코드 전체에 그렇게까지 영향을 안미치니깐요. 긴 코드는 될 수 있으면 사용하지 말고 짧은 코드도 상황에서 따라 적설하게 사용하시면 좋습니다.
2. 코딩
인라인 함수로 선언 된 함수를 실제 코딩해서 돌려 볼까요.
[전체소스]
#include <iostream>
using namespace std;
inline void output(int a){
cout<<"a = "<<a<<endl;
}
int main(int argc, char** argv) {
int input;
cout<<"정수 하나를 입력하시오? ";
cin>>input;
output(input);
output(input*input);
return 0;
}
[결과]

마무리
오늘은 inlien()함수에 대해 알아 보았습니다. 설명은 했지만 실습 코딩에는 사실 시각적으로 inline()함수의 의미를 알 수 없습니다. 단지 정의만 컴파일 할 때 해당 코드가 위 코딩을 기준으로 보면 main()함수 내 두번 호출이 되는데 이 두번을 호출 함수 내 코드가 main()함수에 삽입 되어 컴파일 된다는 정도만 이론적으로 정의만 내릴 뿐이죠.
아무튼 위에 설명한 예제 ouput() 출력문을 main()함수 내에서 호출 한 위치에 그대로 코드가 삽인 된다는 개념만 잡아 두시면 아마 될 듯 싶네요.

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.
Thank you