본문 바로가기
개발이야기/언리얼 c++

언리얼 C++: #define

by oddsilk 2024. 5. 24.

#define은 C와 C++에서 매크로를 정의하는 데 사용하는 전처리기 지시문입니다.

매크로는 코드에서 반복적으로 사용되는 텍스트를 치환하는데 사용되며, 주로 상수나 간단한 함수처럼 사용됩니다.

매크로는 컴파일러가 소스 코드를 컴파일하기 전에 텍스트 치환을 수행하므로 코드의 가독성과 유지보수성을 높이는 데 도움을 줍니다.

 

#define의 역할과 사용 방법

#define은 주로 다음과 같은 용도로 사용됩니다:

  1. 상수 정의:
    • 상수를 정의하여 코드에서 직접 숫자나 문자열을 사용하지 않도록 합니다.
  2. 매크로 함수 정의:
    • 반복되는 코드 블록을 매크로로 정의하여 코드 중복을 줄이고 가독성을 높입니다.
  3. 조건부 컴파일:
    • 특정 조건에 따라 코드를 컴파일할지 여부를 결정할 수 있습니다.

 

 

예제

상수정의

#define PI 3.14159
  • PI라는 이름을 3.14159로 정의합니다. 이제 코드에서 PI를 사용할 때마다 3.14159로 치환됩니다.

매크로 함수 정의

#define SQUARE(x) ((x) * (x))
  • SQUARE라는 매크로 함수는 x의 제곱을 계산합니다. SQUARE(5)는 컴파일 전에 ((5) * (5))로 치환됩니다.

 

define을 언리얼에서는 어떻게?

ex) 델리게이트

#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type) FUNC_DECLARE_DELEGATE(DelegateName, void, Param1Type)

위 매크로는 DECLARE_DELEGATE_OneParam라는 이름으로 정의됩니다.

이 매크로는 두 개의 매개변수 DelegateNameParam1Type을 받습니다.

매크로가 정의된 방식에 따라, 코드에서 DECLARE_DELEGATE_OneParam을 사용할 때마다 FUNC_DECLARE_DELEGATE(DelegateName, void, Param1Type)로 치환됩니다.

주석과 함께보는 설명

// 매크로 정의: DECLARE_DELEGATE_OneParam는 두 개의 매개변수를 받습니다.
// 첫 번째 매개변수는 DelegateName, 두 번째 매개변수는 Param1Type입니다.
// 이 매크로는 FUNC_DECLARE_DELEGATE(DelegateName, void, Param1Type)로 치환됩니다.
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type) FUNC_DECLARE_DELEGATE(DelegateName, void, Param1Type)

// 예제 사용: MyDelegate라는 이름의 델리게이트를 정의하고, 매개변수 타입은 int입니다.
DECLARE_DELEGATE_OneParam(MyDelegate, int)

// 위 코드는 다음과 같이 치환됩니다:
FUNC_DECLARE_DELEGATE(MyDelegate, void, int)