본문 바로가기
개발/C++

인라인(Inline) 함수

by 남생이야 2024. 6. 11.

 

  • 함수 프로그램의 실행 속도를 높이기 위해 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