栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

版权声明:本文为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:


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号