본문 바로가기

CS/OOP

C++ : In-line function 이란 무엇인가

728x90

In-line fucntion이란 마치 C/C++의 매크로처럼 함수를 In-line 라인 안에 숨긴다는 뜻이다. 예를 들어

 

void add(int a, int b){
	return a + b;
}


main(){
	cout << 2 + (add(1,3) << endl;
}

라고 썼다면 디버깅 해보면 메인에서 add를 가서 리턴 값을 받아와 2와 연산한 값을 출력했을 것이다.

main -> cout -> add -> 연산 -> 출력  순이다. 

 

만약 inline을 쓰면?

 

inline void add(int a, int b){
	return a + b;
}


main(){
	cout << 2 + (add(1,3) << endl;
}

main -> cout -> 연산 -> 출력  순이된다. 이미 컴파일러는 인라인함수 때문에 저 함수 자체를 알고 있는 상태이기 때문이다. 우리가 어떤 수학 공식을 알면 문제에서 바로 적용 가능하지만 그 공식의 이름만 안다면 책에서 찾아보고 써야하는 것과 같다. inline은 함수를 컴파일러에게 외우게 하는 것이다. 

때문에 inline은 함수의 실행시간을 줄여줄 수 있다.

 

그러나 물론 장점만 있는 것은 아니다. 이는 메모리에는 좋지않은 영향을 준다. inline처리된 함수가 여러번 호출될 경우 컴파일된 코드가 길어질 수 있다.

 

그러므로 인라인은 함수가 1,2 줄의 짧은 코드일 경우

또는, 반복문을 돌릴 때 유용하게 쓰인다. 

 

최근 컴파일러들은 사용자가 inline을 정해주지 않아도 알아서 inline을 적절히 사용해 컴파일해주기도 한다.