반응형
inline함수

C++에서 인라인 함수(inline function)는 컴파일러에 의해 함수 호출이

발생하는 대신 함수의 내용이 컴파일 전에 호출하는 코드 자체로 대체되는 함수입니다.

이는 함수 호출의 오버헤드를 줄이고 실행 속도를 향상시키는데 도움이 됩니다.

 

함수 호출의 오버헤드는 함수를 호출할 때 추가적으로 발생하는 비용을 의미한다.

 

인라인 함수는 일반 함수와는 다르게 정의 앞에 inline 키워드를 사용하여 선언된다.

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

 

 

 

인라인 함수 특징

1. 함수 호출 대신 코드 내용의 복사 : 

인라인 함수는 함수 호출 대신 컴파일 전에 호출하는 코드 자체로 대체됩니다.

이는 함수 호출에 따른 오버헤드를 제거하여 실행 속도를 향상시킵니다.

함수 호출 과정에서 발생하는 스택 프레임 설정 및 복귀 주소 저장과 같은 작업을

생략하고, 함수 내용을 직접 실행하는 것을 의미한다.

함수의 크기가 작은 경우에 효과적입니다.

 

2. 컴파일러의 추천 : 

inline 키워드는 프로그래머가 컴파일러에게 함수를 인라인화할 것을 권장하는 힌트이다.

컴파일러는 이 힌트를 고려하여 최적의 판단을 내린다. 실제로 모든 inline 함수가

인라인화 되지는 않을 수 있다.

 

 

 

인라인 함수 정리

인라인 함수는 메크로함수 처럼 사용 가능하며 복잡한 루틴은 안된다.

함수가 인라인화 되어 성능의 향상을 꾀할수 있지만 함수의 정의 방식이

일반함수에 비해서 복잡하다. 따라서 복잡한 함수의 정의에는 한계가 있다.

 

인라인 함수는 함수의 내용이 헤더 파일에 직접 포함되어 다른 소스 파일에서

사용할 수 있어야 한다. 이는 헤더 파일과 소스 파일 간의 관리와 빌드 과정에서

주의가 필요한 요소가 있다. 그렇기에 인라인 함수의 정의방식은 일반함수에 비해서 복잡하다.

 

매크로함수만의 장점은 인라인 함수와 달리 자료형에서 독립적이다.

물론, inline함수 또한 템플릿을 사용하면 자료형에서 독립적일 수 있다.

 

 

반응형
반응형

'C++' 카테고리의 다른 글

함수 오버로딩(Function Overloading) & 함수 오버라이딩(Function Overriding)  (0) 2023.05.30
구조체  (0) 2023.05.30
강한 타입 검사  (0) 2023.05.30
C++ 표준 라이브러리  (1) 2023.05.30
동적 할당  (0) 2023.05.30

+ Recent posts