最近在学习UE4编程时,遇到了一个坑,在使用DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMydelegate, FString, string1)声明一个带参数的代理时候,没有在语句末尾添加分号,导致工程编译失败。而在使用UE4中其他的宏的时候,大多数都不需要在语句末尾添加分号,例如UFUNCTION和UPROPERTY。于是对这个宏的定义和使用产生了疑问,经过百度得出的答案如下:
如果你宏定义中有分号,使用的时候加不加分号都行,因为多的那个分号可以认为是空语句。但是宏定义没有加分号,使用宏的时候就要记着加分号。(原文链接:https://zhidao.baidu.com/question/308764897.html)
测试结果案例:
#include<iostream>
using namespace std;
#define ADD(x,y) (x)+(y)
#define ADD2(x,y) (x)+(y);
int main()
{
ADD(1,2);
ADD2(1,2)
return 0;
}
推测:UE中声明代理的宏定义末尾可能没有添加分号,所以在使用它的时候需要我们手动添加分号,而其他宏的定义语句末尾可能添加了分号,所以我们在使用的时候就不需要添加分号。不过为了减轻记忆压力,我决定以后再使用宏的时候都给他加上分号。反正也不会报错。