C++에는 인라인 함수(inline function)라는 유용한 기능이 있습니다. 인라인 함수는 C나 C++의 매크로와 비슷한 역할을 하며, 사용하려면 inline 키워드를 명시해야 합니다. 이러한 함수는 어디에서든 활용할 수 있지만, 효과적인 사용을 위해 몇 가지 가이드라인을 따르는 것이 좋습니다.
인라인 함수를 사용하면 좋은 경우
매크로(#define)를 대체할 때 — 매크로 대신 인라인 함수를 사용하면 타입 검사가 가능하고 디버깅도 쉬워지는 등 여러 장점이 있습니다.
작은 함수일 때 — 코드 크기가 작은 함수를 인라인으로 처리하면 더 빠른 실행 속도와 더 작은 실행 파일 크기를 얻을 수 있습니다.
자주 호출되는 작은 함수일 때 — 함수 호출 오버헤드가 반복적으로 발생하는 상황에서 인라인화는 성능 향상에 큰 도움이 됩니다.
인라인 함수 사용을 피해야 하는 경우
I/O 중심의 함수일 때 — 입출력 작업은 이미 처리 시간이 길기 때문에 인라인화로 얻는 이득이 거의 없습니다.
함수 본문이 클 때 — 코드가 큰 함수를 인라인으로 처리하면 호출 지점마다 코드가 복사되어 오히려 실행 파일이 커질 수 있습니다.
재귀 함수일 때 — 재귀 호출이 포함된 함수는 인라인이 제대로 동작하지 않을 수 있습니다.
기억해야 할 핵심 포인트
중요한 점은 inline이 명령(command)이 아니라 요청(request)이라는 것입니다. 즉, 우리는 컴파일러에게 "이 함수를 인라인으로 처리해 달라"고 요청하는 것뿐입니다. 컴파일러가 현재 함수를 인라인으로 만드는 것이 적절하지 않다고 판단하면, 이를 일반 함수로 변환할 수 있습니다. 따라서 인라인 키워드를 붙였다고 해서 반드시 인라인화가 보장되는 것은 아닙니다.