【虚幻4】浅析UE4中的C++

【虚幻4】浅析UE4中的C++,第1张

版权声明:本文为CSDN博主「趁着头发多我想做游戏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37658157/article/details/125296949

摘要:虚幻4中的C++是“魔改”过的,到处可见的宏编程会增加初学者的理解成本,本文主要是记录一下自己的学习过程以及遇到的难题。

目录
  • C++的基础知识点
    • 1. 宏定义
    • 2. 指针(TODO)
  • UE4中的C++(TODO)

C++的基础知识点 1. 宏定义

参考链接:C++宏定义详解

可以理解为简单的字符串替换,如 #include 实际上是把头文件 xxx.h的内容展开,然后替换到声明处而已。注意看下面的例子:

// xxx.h
int a = 1;
int b = 2;

以下两段代码是等效的:

int func()
{
    #include "xxx.h"
    return a + b;
}
int func()
{
    int a = 1;
	int b = 2;
    return a + b;
}

注意宏替换是简单的字符串替换,不会进行任何运算。比如想用宏定义一个求平方数的函数,以下的宏定义就是错误的:

#define area(x) x*x  

void main()
{
    int y = area(2+2);//本该输出16,实则输出8
    printf("%d",y);
}

上述程序本该输出16,实则输出8,因为宏定义实际上会替换成下面的代码:

void main()
{
    int y = 2+2*2+2;
    printf("%d",y);
}

正确的宏定义如下所示:

#define area(x) ((x)*(x)) 

注意最外层的括号不能丢掉,否则在计算除法时又会出错了:

#define area(x) (x)*(x)  

void main()
{
    int y = area(2+2)/area(2+2); //本该输出1,实则输出16
    //实际上替换成了 int y = (2+2)*(2+2)/(2+2)*(2+2);
    printf("%d",y);
}
2. 指针(TODO)
UE4中的C++(TODO)
  1. UE的特殊宏
    由于C++没有反射和垃圾回收机制,UE封装了一套以宏为基础的反射与垃圾回收架构。

UPROPERTY:

UFUNCTION:

UCLASS:

USTRUCT :

GENERATED_BODY:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1498320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存