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

C++ ] 인라인 함수

by eteo 2023. 10. 7.
반응형

 

 

인라인 함수란?

 

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

 

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

 

 

 

 

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

 

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

 

 

 

 

인라인 함수의 장점

 

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

 

 

 

 

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

 

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

 

 

 

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

 

반응형