인라인 함수란?
보통 일반함수를 사용할 때는 함수의 선언은 헤더파일에 하고 정의는 소스파일에 분리한다. 하지만 함수를 헤더파일에 정의하고 inline 키워드를 사용하면 인라인 함수로 만들 수 있다.
inline 키워드를 사용하면 컴파일러는 해당 함수를 호출하는 곳에 직접 인라인 함수 코드를 삽입한다. 이렇게 하면 보통 일반함수를 헤더에 정의했을 때 발생하는 오류인 함수 정의가 여러번 중복된다는 오류를 피할 수 있다.
인라인 함수 사용이 효과적인 경우
보통 인라인 함수는 함수 코드 크기가 작고 간단할 때 가장 효과적이다. 인라인 함수가 너무 크거나 빈번하게 호출되는 경우 해당 인라인 함수 코드가 함수 호출 부분에 삽입되기 때문에 코드 크기가 커져 메모리 사용량이 증가하고 캐시 효율성을 낮출 수 있다.
인라인 함수의 장점
보통의 함수 호출 방식은 호출된 함수가 위치한 메모리로 점프하고 해당 함수를 수행하고 난 뒤 호출된 곳으로 리턴하게 되는데 인라인 함수는 이런 과정없이 컴파일 단계에서 삽입된 코드를 수행하므로 함수 호출의 오버헤드가 줄어 실행시간을 절약할 수 있다.
인라인 함수와 매크로 함수의 차이
매크로 함수는 전처리기에서 단순히 텍스트를 치환하기 때문에 인수를 항상 괄호로 감싸주지 않으면 오류가 날 가능성이 크고 타입 안정성이 없는 반면, 인라인 함수는 컴파일러가 함수의 호출 부분에 함수 코드를 직접 삽입하며 일반 함수와 마찬가지로 파라미터 타입과 리턴 타입을 지정하므로 타입 안정성이 있다.
// xxx.h
#pragram once
inline int add(int a, int b) {
return a + b;
}
'프로그래밍 > C++' 카테고리의 다른 글
C/C++ ] 키보드 메시지 후킹을 사용한 간단 키로거 (0) | 2023.11.21 |
---|---|
C++ ] mutex, lock_guard (0) | 2023.10.08 |
C++ ] 연속된 메모리 공간에 저장되는 벡터의 메모리 재할당 빈도 (0) | 2023.10.06 |
C++ ] enum class 사용법 (0) | 2023.10.03 |
C++ ] .ini 파일 포맷, 설정 파일 입출력 방법 (0) | 2023.09.27 |