版权声明:本文为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++宏定义详解
可以理解为简单的字符串替换,如 #include
// 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)
- UE的特殊宏
由于C++没有反射和垃圾回收机制,UE封装了一套以宏为基础的反射与垃圾回收架构。
UPROPERTY:
UFUNCTION:
UCLASS:
USTRUCT :
GENERATED_BODY:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)