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

C++ - 인라인(inline) 함수

by 피로물든딸기 2021. 5. 19.
반응형

C, C++ 전체 링크

 

매크로 함수는 실행속도가 빠르지만 간단한 함수도 정의하기가 힘들다.

c++에서의 inline 함수는 일반 함수처럼 만들고 매크로 함수처럼 대체하는 기능이 있다.


두 변수 중 큰 값을 return하는 함수는 보통 아래처럼 만든다.

int max(int a, int b)
{
	return (a > b) ? a : b;
}

 

위 함수를 매크로 함수로 만들면 아래와 같다.

#define MAX_VALUE(A, B) (((A) > (B)) ? (A) : (B))

아주 간단한 함수지만, 괄호가 많아지기 때문에 벌써부터 복잡해진다.

 

하지만 inline 키워드를 이용하면 훨씬 간단하다.

inline int max_value(int a, int b)
{
	return (a > b) ? a : b;
}

 

inline 함수는 함수에 inline 키워드만 선언하면 되므로 매크로 함수보다 만들기가 쉽다.


매크로 함수는 전처리기 의해 처리되지만, inline 함수는 컴파일러에 의해서 처리된다.

 

따라서 모든 함수에 inline 키워드를 추가해도 속도 향상을 기대할 수 없다.

컴파일러가 성능이 떨어진다고 판단할 경우, 키워드를 무시한다.

반대로 성능 개선에 필요한 경우는 임의로 키워드를 추가하기도 한다.


위와 같은 간단한 함수에 inline 키워드를 선언해도 Visual Studio에서 속도가 개선되지 않을 수 있다.

이 경우는 아래와 같이 먼저 최적화 설정을 변경해야 한다.

 

Visual Studio솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭한 후 속성으로 들어가보자.

 

구성 속성에서 C/C++ → 최적화를 클릭한 후 인라인 함수 확장에서 __inline만 확장을 선택한다.

 

설정이 완료되었으면 일반 함수 / 매크로 함수 / inline 함수의 속도를 비교해보자.

실행 결과는 링크를 참고하면 된다.

반응형

'개발 > C, C++' 카테고리의 다른 글

구조체의 크기  (0) 2021.06.19
C++ - 컨테이너와 반복자 (Container and Iterator)  (0) 2021.06.11
단락 평가 Short Circuit  (0) 2021.05.11
C++ split 함수 구현  (0) 2021.05.08
typedef 선언  (0) 2021.05.02

댓글