inline은 성능 마법보다 작은 함수를 표현하는 방식으로 읽는 편이 맞습니다.
- 헤더에 짧은 함수를 넣고 싶은데 링크가 걱정된다
- 매크로 대신 무엇을 써야 할지 판단하고 싶다
inline이 정말 성능 보장을 주는지 확인하고 싶다
숏컷 코드
c
static inline int max_int(int a, int b) {
return a > b ? a : b;
}문법
헤더에 짧은 유틸리티 함수를 둘 때는 보통 static inline을 씁니다.
c
static inline int clamp_zero(int x) {
return x < 0 ? 0 : x;
}이 패턴은 매크로보다 안전하고, 헤더에 둬도 링크 충돌을 피하기 쉽습니다.
선택 기준
c
#define SQUARE(x) ((x) * (x))이런 매크로는 SQUARE(i++)에서 문제가 생기기 쉽습니다. 반면 static inline 함수는 인자를 정상적인 함수처럼 한 번 평가합니다.
즉 계산 로직이면:
- 타입 검사 가능
- 인자 한 번 평가
- 디버거에서 읽기 쉬움
이라는 이유로 static inline 쪽이 더 낫습니다.
체크포인트
inline은 성능 보장 키워드가 아니라 힌트에 가깝습니다.- 헤더 유틸 함수는 보통
static inline이 가장 실전적입니다. - 매크로 대체로 유용하지만, 전처리 전용 기능을 대신하지는 못합니다.
- 큰 함수나 복잡한 함수까지 억지로
inline으로 몰 필요는 없습니다. - clamp, max/min, 짧은 predicate 같은 작은 함수에서 특히 잘 맞습니다.
주의할 점
inline이 붙었다고 병목이 사라진다고 기대하면 안 됩니다. 성능 이슈는 프로파일링으로 보고, inline은 우선 읽기 좋은 작은 함수 구조를 만드는 도구로 쓰는 편이 더 현실적입니다.
참고 링크
1 sources