inline 함수 수식자

inline 함수 수식자

작고 자주 호출되는 서브루틴을 호출하는 대신 그 자리에 코드를 복사해 넣도록 컴파일러에 요청하는 수식자가 inline이에요. 실행 속도를 높일 수 있지만, 모든 경우에 효과적인 건 아니라는 점을 함께 알아두면 좋아요.

출처: Free Pascal Reference 14.9.6 inline

본문

inline으로 선언된 프로시저는 호출되는 위치에 그대로 복사돼요. 실제 프로시저 호출이 일어나지 않고, 프로시저의 코드가 필요한 자리에 그대로 옮겨지는 거죠. 그 결과 프로시저나 함수를 많이 사용하는 경우 실행 속도가 빨라져요. 반면 큰 함수를 인라인하는 것은 의미가 없다는 점은 자명해요.

기본적으로 inline 프로시저는 허용되지 않으며, 다음 중 하나로 인라인 코드를 활성화해야 해요.

  • 명령줄 스위치 -Si
  • 지시어 {$inline on}

주의(Remark) 사항 몇 가지를 살펴볼게요.

  1. inline은 어디까지나 컴파일러에 대한 힌트예요. 모든 호출이 반드시 인라인된다는 뜻은 아니에요. 때로 컴파일러가 함수 자체를 인라인할 수 없다고 판단하거나, 특정 호출은 인라인할 수 없다고 판단할 수 있어요. 그런 경우 컴파일러는 경고를 내보내요.
  2. 예전 Free Pascal 버전에서는 인라인 코드가 유닛에서 내보내지지 않았어요. 따라서 다른 유닛에서 인라인 프로시저를 호출하면 일반 프로시저 호출이 수행됐죠. 유닛 안에서만 Inline 프로시저가 실제로 인라인됐는데, 버전 2.0.2부터는 인라인이 유닛을 넘나들며 동작해요.
  3. 재귀 인라인 함수는 허용되지 않아요. 즉, 자기 자신을 호출하는 인라인 함수는 만들 수 없어요.

더 알아보기

  • -Si 명령줄 스위치와 {$inline on} 지시어
  • Free Pascal 유닛 간 인라인 동작(버전 2.0.2 이상)