
UE4 C++ FORCEINLINE을 활용한 Enum 클래스 디버깅
2021. 1. 18. 23:08
DevLog/Unreal Engine
Enum Class란? (사용자정의 열거형) 열거형은 정수형 상수를 사람이 알아보기 쉬운 형태로 만들어줍니다. 이러한 열거형은 코드 내부에서만 사용이 가능하고, 언리얼 에디터의 디테일 패널이나, 블루프린트에서 사용이 불가능하다는 문제가 있습니다. 이 문제는 언리얼 전용 열거형을 만들어주시면 해결할 수 있습니다. UEnum 레퍼런스 코드 UENUM(BlueprintType) enum class EViewMode : uint8 { ThirdPerson UMETA(DisplayName = "ThirdPerson"), FirstPerson UMETA(DisplayName = "FirstPerson") }; 위 열거형은 ViewMode를 의미하는 예제 열거형이며 3인칭과 1인칭 타입이 존재합니다. DisplayN..

C++ inline, __inline, __forceinline란?
2021. 1. 18. 22:35
DevLog/C & C++
inline inline 키워드는 함수 호출 시 발생하는 오버헤드를 줄이기 위해 함수를 호출하는 대신 함수가 호출되는 곳마다 함수의 코드를 복사해 넣어주는 방법이다. 그렇다면 함수 호출 시 발생하는 오버헤드는 뭘까? 실제로 함수가 호출되는 과정을 요약하면 함수의 인자를 스택에 저장 함수가 리턴될 때 돌아올 주소를 스택이나 레지스터에 저장 함수의 시작 주소로 점프 함수의 코드 실행 함수에서 만들어진 지역변수, 스택에 저장된 인자 해제, 리턴 값을 레지스터에 저장 함수를 호출 할 때 저장해둔 주소로 되돌아감 위와 같은 과정을 거치는데 간단한 함수를 호출하기 위해서 저런 명령어들을 수행해야 한다면 오버헤드가 될 수밖에 없다. 이런 오버 헤드를 줄이기 위해 C++에서는 inline이라는 키워드를 제공한다. 그림..