C++에서 inline 키워드는 다양한 위치에서 사용됩니다. 인라인 변수(inline variable)를 만들거나, 인라인 네임스페이스(inline namespace)를 정의할 때도 쓰이고, 무엇보다 인라인 메서드나 인라인 함수를 선언할 때 가장 널리 활용됩니다.
인라인 함수란 무엇인가?
C++의 인라인 함수는 클래스와 함께 자주 사용되는 강력한 개념입니다. 어떤 함수가 인라인으로 선언되면, 컴파일러는 컴파일 시점에 해당 함수가 호출되는 각 지점마다 함수 코드의 복사본을 직접 삽입합니다. 이를 통해 일반적인 함수 호출 과정에서 발생하는 오버헤드를 줄일 수 있습니다.
다만 주의할 점이 있습니다. 인라인 함수의 내용을 변경하면, 컴파일러가 호출 지점마다 새로운 코드로 교체해야 하기 때문에 해당 함수를 사용하는 모든 클라이언트 코드를 다시 컴파일해야 할 수 있습니다. 재컴파일하지 않으면 이전 기능이 그대로 유지됩니다.
inline 키워드 작성 방법
함수를 인라인으로 만들려면 함수 이름 앞에 inline 키워드를 붙이고, 함수가 실제로 호출되기 전에 함수를 정의해야 합니다. 참고로 컴파일러는 함수 본문이 한 줄을 초과하는 경우 등에는 성능상 이유로 inline 한정자를 무시할 수도 있습니다. 즉, inline 키워드는 컴파일러에 대한 '요청'이지 '명령'이 아닙니다.
또한 중요한 규칙 하나가 있습니다. 클래스 정의 내부에서 함수를 정의하면 inline 키워드를 명시적으로 붙이지 않아도 자동으로 인라인 함수로 처리됩니다.
예제 코드
다음은 인라인 함수를 활용해 두 수 중 큰 값을 반환하는 예제입니다.
#include <iostream>
using namespace std;
// 두 수 중 큰 값을 반환하는 인라인 함수
inline int Max(int x, int y) {
return (x > y) ? x : y;
}
int main() {
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}실행 결과
Max (20,10): 20 Max (0,200): 200 Max (100,1010): 1010
정리: inline 키워드를 언제 사용해야 할까?
정리하면 다음과 같은 경우에 inline 키워드를 활용하는 것이 좋습니다.
- 짧고 호출 빈도가 높은 함수의 성능 최적화가 필요할 때
- 헤더 파일에 함수 정의를 포함시켜 여러 번역 단위에서 사용할 때(중복 정의 오류 방지)
- 클래스 내부에 정의된 멤버 함수처럼, 암묵적으로 인라인 처리되는 경우를 명확히 하고 싶을 때
반면 함수 본문이 길거나 재귀 호출이 포함된 경우에는 컴파일러가 인라인 요청을 거부할 가능성이 높으므로, 남용하기보다는 필요한 곳에 적절히 사용하는 것이 바람직합니다.