인라인 함수

inline 정의 중복 규칙

작은 함수를 호출 위치에 펼칠 수 있다는 힌트이면서, 헤더에 함수 정의를 둘 때 여러 번 정의되는 문제를 피하게 합니다.

목적

작은 함수 호출 부담 완화

짧고 자주 호출되는 함수는 호출 준비 비용보다 본문 실행 비용이 작을 수 있습니다.

inline int max
헤더

정의를 여러 파일에서 공유

헤더에 정의된 함수가 여러 번 포함되어도 하나의 정의 규칙을 만족하게 돕습니다.

header definition
컴파일러

최종 판단은 최적화 단계

inline을 붙여도 복잡한 함수는 펼치지 않을 수 있고, 안 붙여도 펼칠 수 있습니다.

optimizer
매크로 비교

타입 검사와 범위 유지

인라인 함수는 매크로보다 타입 안전하고 디버깅과 이름 범위 측면에서 낫습니다.

function > macro
적합한 경우짧고 단순하며 헤더에서 정의해야 하는 함수에 특히 자연스럽습니다.
부적합한 경우본문이 크면 코드 크기가 늘어 캐시 효율이 떨어질 수 있습니다.
ODR 연결같은 정의가 여러 번 보이는 상황에서 inline은 링크 단계의 중복 정의 문제를 줄입니다.