- 함수 프로그램의 실행 속도를 높이기 위해 C++ 에 추가된 기능이다.
- 일반 함수와 인라인 함수의 차이점은 C++ 컴파일러가 코드를 프로그램에 어떻게 결합하느냐에 차이가 있다.
- 일반 함수의 호출은 프로그램을 그 함수의 주소로 점프시켰다가 함수의 처리가 종결되면 원래의 자리로 돌아오는 것이다.
함수 처리 과정
함수 호출 명령 바로 다음에 있는 명령의 주소를 메모리에 저장한다.
스택에 매개변수를 복사한다.
그 함수가 시작되는 메모리 위치로 점프한다.
그 함수의 코드를 수행하고 함수의 리턴값을 레지스터에 복사한다.
저장해 두었던 주소의 명령으로 돌아온다.
이 과정을 수행하는데 걸리는 시간이 많이 걸리기 때문에 C++은 인라인 함수를 제공한다.
- 인라인 함수는 컴파일 시, 함수 호출 부분에 그 함수의 코드로 대체해서 처리한다.
- (그 함수 주소로 점프할 필요가 없어진다.)
- 인라인 함수의 처리 시간이 함수 호출 과정을 처리하는 시간에 비해 매우 길다면 의미가 없기 때문에 매우 짧을 경우에 사용하는 것이 좋다.
인라인 함수 선언
- 함수 선언 앞에 inline 키워드를 붙인다.
- 함수 정의 앞에 inline 키워드를 붙인다.
#include <stdio.h>
class Test
{
public:
void Sub(int x, int y); // 선언부
public:
void Mul(int a, int b)// 선언 및 정의 - 인라인
{
}
public:
void Div(int a, int b);
};
void Test::Sub(int x, int y) // 정의부
{
}
// 임의로 붙여보기
__inline void Test::Div(int a, int b) // __inline _inline (__forceinline => 무조건 인라인하라고 하는 명령)
{
}
//// inline 화 할수있음 하라고 컴파일러에게 알려줌
//inline void Test::Mul(int a, int b)
//{
//
//}
int main()
{
return 0;
}
클래스 내에서 함수를 선언 및 정의할 경우 자동적으로 inline 처리한다.
'개발 > C++' 카테고리의 다른 글
가상 기초 클래스( virtual based class) (0) | 2024.06.28 |
---|---|
이름 공간(namespace) (0) | 2024.06.15 |
동적 캐스팅(dynamic_cast) (0) | 2024.06.07 |
매크로(Macro) (0) | 2024.06.07 |
가상 함수 (2) | 2024.06.03 |