에디의 우당탕탕 코딩공장

[UE5] 유틸리티 매크로 작성하기

by 인턴 에디
📘 인생 언리얼 교과서 교재를 공부하고 참고하여 작성했습니다.

디버그 시 로그를 표시하기 위해 몇가지 매크로를 만든다.

 

1. #define 전처리문을 이용한 매크로

 

TPSProject.h ({프로젝트이름}.h)

#pragma once

#include "CoreMinimal.h"

#define CALLINFO (FString(__FUNCTION__)+TEXT("(")+FString::FromInt(__LINE__) + TEXT(")"))

FString(__FUNCTION__) : 호출된 곳의 함수이름을 문자열로 표현

FString::FromInt(__LINE__) : 호출된 곳의 줄 번호를 문자열로 가져옴.

 

 

TPSProjectGameMode.cpp

ATPSProjectGameMode::ATPSProjectGameMode()
{
	UE_LOG(TPS, Warning, TEXT("%s"), *CALLINFO)
}

 

 

2. CALL_INFO 매크로 정의

아까 작성했던 TPSProject.h에 UE_LOG 함수를 대체할 매크로를 만든다.

#define PRINT_CALLINFO() UE_LOG(TPS, Warning, TEXT("%s"), *CALLINFO)

 

TPSProjectGameMode.cpp

ATPSProjectGameMode::ATPSProjectGameMode()
{
	PRINT_CALLINFO();
}

 

3. PRINT_LOG 매크로 정의

#define PRINT_LOG(fmt, ...) UE_LOG(TPS, Warning, TEXT("%s %s"), *CALLINFO, \
*FString::Printf(fmt, ##__VA_ARGS__))

 

 

`...`

가변 인수 → 인수를 여러개 넘겨받을 수 있다.

 

\

줄바꿈 처리

 

 

EX

ATPSProjectGameMode::ATPSProjectGameMode()
{
	PRINT_LOG(TEXT("My Log : %s"), TEXT("TPS Project!!")); 
}

 

4. 로그 카테고리 변경

 

TPSProject.h

#pragma once

#include "CoreMinimal.h"

DECLARE_LOG_CATEGORY_EXTERN(TPS,Log,All); //TPS카테고리 선언

#define CALLINFO (FString(__FUNCTION__)+TEXT("(")+FString::FromInt(__LINE__) + TEXT(")"))

#define PRINT_CALLINFO() UE_LOG(TPS, Warning, TEXT("%s"), *CALLINFO)


DECLARE_LOG_CATEGORY_EXTERN 

레벨 별 로그 카테고리를 정의하기 위한 매크로

 

로그 카테고리가 변경되어 있다!

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기