
C++ inline, __inline, __forceinline란?
2021. 1. 18. 22:35
DevLog/C & C++
inline inline 키워드는 함수 호출 시 발생하는 오버헤드를 줄이기 위해 함수를 호출하는 대신 함수가 호출되는 곳마다 함수의 코드를 복사해 넣어주는 방법이다. 그렇다면 함수 호출 시 발생하는 오버헤드는 뭘까? 실제로 함수가 호출되는 과정을 요약하면 함수의 인자를 스택에 저장 함수가 리턴될 때 돌아올 주소를 스택이나 레지스터에 저장 함수의 시작 주소로 점프 함수의 코드 실행 함수에서 만들어진 지역변수, 스택에 저장된 인자 해제, 리턴 값을 레지스터에 저장 함수를 호출 할 때 저장해둔 주소로 되돌아감 위와 같은 과정을 거치는데 간단한 함수를 호출하기 위해서 저런 명령어들을 수행해야 한다면 오버헤드가 될 수밖에 없다. 이런 오버 헤드를 줄이기 위해 C++에서는 inline이라는 키워드를 제공한다. 그림..