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()는 단순히 멤버 변수를 반환하는 아주 짧은 함수입니다. 이런 함수들은 호출 비용이 실제 실행 비용보다 클 수 있기 때문에, 성능 최적화를 위해 무조건 인라인화하는 것이 유리합니다.
'언리얼엔진5 공부' 카테고리의 다른 글
| [TIL] Unreal Engine 5: FDamageEvent 상속을 통한 커스텀 데미지 시스템 구현 (0) | 2026.01.28 |
|---|---|
| TIL: 언리얼 엔진 5 C++ 기반 막기 & 패링 시스템 구현 (0) | 2026.01.21 |
| 2025년 12월 31일 TIL (0) | 2025.12.31 |
| [TIL] Unreal Engine 5: TMap과 TimerManager를 이용한 확장형 쿨타임 시스템 (0) | 2025.12.30 |
| TIL: Unreal Engine 5 멀티플레이어 UI 데이터 동기화 및 C++ 위젯 바인딩 (0) | 2025.12.29 |