본문 바로가기
프로그래밍/C++

C++ ] 인라인 함수

by eteo 2023. 10. 7.

 

 

인라인 함수란?

 

보통 일반함수를 사용할 때는 함수의 선언은 헤더파일에 하고 정의는 소스파일에 분리한다. 하지만 함수를 헤더파일에 정의하고 inline 키워드를 사용하면 인라인 함수로 만들 수 있다.

 

inline 키워드를 사용하면 컴파일러는 해당 함수를 호출하는 곳에 직접 인라인 함수 코드를 삽입한다. 이렇게 하면 보통 일반함수를 헤더에 정의했을 때 발생하는 오류인 함수 정의가 여러번 중복된다는 오류를 피할 수 있다.

 

 

 

 

인라인 함수 사용이 효과적인 경우

 

보통 인라인 함수는 함수 코드 크기가 작고 간단할 때 가장 효과적이다. 인라인 함수가 너무 크거나 빈번하게 호출되는 경우 해당 인라인 함수 코드가 함수 호출 부분에 삽입되기 때문에 코드 크기가 커져 메모리 사용량이 증가하고 캐시 효율성을 낮출 수 있다.

 

 

 

 

인라인 함수의 장점

 

보통의 함수 호출 방식은 호출된 함수가 위치한 메모리로 점프하고 해당 함수를 수행하고 난 뒤 호출된 곳으로 리턴하게 되는데 인라인 함수는 이런 과정없이 컴파일 단계에서 삽입된 코드를 수행하므로 함수 호출의 오버헤드가 줄어 실행시간을 절약할 수 있다.

 

 

 

 

인라인 함수와 매크로 함수의 차이

 

매크로 함수는 전처리기에서 단순히 텍스트를 치환하기 때문에 인수를 항상 괄호로 감싸주지 않으면 오류가 날 가능성이 크고 타입 안정성이 없는 반면, 인라인 함수는 컴파일러가 함수의 호출 부분에 함수 코드를 직접 삽입하며 일반 함수와 마찬가지로 파라미터 타입과 리턴 타입을 지정하므로 타입 안정성이 있다.

 

 

 

// xxx.h
#pragram once
inline int add(int a, int b) {
    return a + b;
}