inline 함수 수식자
inline 함수 수식자
작고 자주 호출되는 서브루틴을 호출하는 대신 그 자리에 코드를 복사해 넣도록 컴파일러에 요청하는 수식자가 inline이에요. 실행 속도를 높일 수 있지만, 모든 경우에 효과적인 건 아니라는 점을 함께 알아두면 좋아요.
본문
inline으로 선언된 프로시저는 호출되는 위치에 그대로 복사돼요. 실제 프로시저 호출이 일어나지 않고, 프로시저의 코드가 필요한 자리에 그대로 옮겨지는 거죠. 그 결과 프로시저나 함수를 많이 사용하는 경우 실행 속도가 빨라져요. 반면 큰 함수를 인라인하는 것은 의미가 없다는 점은 자명해요.
기본적으로 inline 프로시저는 허용되지 않으며, 다음 중 하나로 인라인 코드를 활성화해야 해요.
- 명령줄 스위치
-Si - 지시어
{$inline on}
주의(Remark) 사항 몇 가지를 살펴볼게요.
inline은 어디까지나 컴파일러에 대한 힌트예요. 모든 호출이 반드시 인라인된다는 뜻은 아니에요. 때로 컴파일러가 함수 자체를 인라인할 수 없다고 판단하거나, 특정 호출은 인라인할 수 없다고 판단할 수 있어요. 그런 경우 컴파일러는 경고를 내보내요.- 예전 Free Pascal 버전에서는 인라인 코드가 유닛에서 내보내지지 않았어요. 따라서 다른 유닛에서 인라인 프로시저를 호출하면 일반 프로시저 호출이 수행됐죠. 유닛 안에서만
Inline프로시저가 실제로 인라인됐는데, 버전 2.0.2부터는 인라인이 유닛을 넘나들며 동작해요. - 재귀 인라인 함수는 허용되지 않아요. 즉, 자기 자신을 호출하는 인라인 함수는 만들 수 없어요.
더 알아보기
-Si명령줄 스위치와{$inline on}지시어- Free Pascal 유닛 간 인라인 동작(버전 2.0.2 이상)