언리얼엔진5 공부

FORCEINLINE

Client Side 2026. 1. 8. 13:38
FORCEINLINE은 컴파일러에게 해당 함수를 반드시 "인라인(Inline)" 처리하라고 강하게 지시하는 매크로입니다.

 

1. 인라인(Inline)이란?

보통 함수를 호출하면 프로그램은 함수가 저장된 메모리 주소로 점프했다가, 실행이 끝나면 다시 돌아옵니다. 이 과정에서 약간의 시간(오버헤드)이 걸립니다.

 

인라인 함수는 컴파일러가 함수를 호출하는 곳에 함수의 본체 코드를 그대로 복사해서 집어넣습니다.

  • 장점: 함수 호출 오버헤드가 사라져 실행 속도가 빨라집니다.
  • 단점: 함수 내용이 길면 전체 코드 크기(Binary Size)가 커집니다.

 

2. 왜 inline 대신 FORCEINLINE인가?

표준 C++의 inline 키워드는 컴파일러에게 보내는 "힌트"일 뿐입니다. 컴파일러가 판단하기에 "함수가 너무 복잡한데?" 싶으면 무시할 수도 있습니다.

하지만 언리얼 엔진의 FORCEINLINE은 각 플랫폼 컴파일러(MSVC, GCC, Clang 등)의 강제 인라인 키워드를 하나로 묶어놓은 매크로입니다.

  • MSVC: __forceinline
  • GCC/Clang: __attribute__((always_inline))

즉, "내 판단이 맞으니까 묻지도 따지지도 말고 인라인해!"라고 명령하는 것입니다.

 

 

3. 왜 Getter 함수에 주로 쓰이나?

GetCameraBoom(), GetFollowCamera()는 단순히 멤버 변수를 반환하는 아주 짧은 함수입니다. 이런 함수들은 호출 비용이 실제 실행 비용보다 클 수 있기 때문에, 성능 최적화를 위해 무조건 인라인화하는 것이 유리합니다.