ue4 函数和宏区别_C++ 宏定义与UE4 Shader Permutation

dd789c672752540857722c75cb86762a.png

1. #define命令

#define命令(#define directive)是C/C++语言中的一个宏定义命令(Macro directive),它用来将一个标识符(identifier)定义为一个字符串(token string),该标识符被称为宏名,被字符串称为替换文本,这里的“字符串”可以是常数,表达式,也可以是字符串,其中又分为带参数的版本和不带参数的版本。

1.1 无参数的宏定义

无参数宏定义就是简单的做替换,那么,最简单的用法就是下面这样,定义一个长和宽。

#define WIDTH       80
#define LENGTH      ( WIDTH + 10 )

在代码中,每一次出现

就会被替代为常数
,每一次出现
就会被替代为
,然后
又被替代为
,宏定义允许嵌套,在宏定义的字符串中可以使用已经被定义的宏名,在预处理的过程中会被预处理器层层替代。
var = LENGTH * 20;

如上这个表达式经过预处理之后的结果就是:

var = ( 80 + 10 ) * 20;

❗ 这里有一个值得注意的点,如果“字符串”里面是一个表达式,那么一定要注意给这个表达式添加一个括号,不然可能会造成误解和误用,上面这个例子中,如果我们去掉括号,最后的结果就和我们的本意不相符了。

#define WIDTH       80
#define LENGTH      WIDTH + 10 

如上这个表达式经过预处理之后的结果就是:

var = 80 + 10 * 20;

❗ 还有一种特殊情况:

#define NOTHING

这里的有标识符,但是是一个空的字符串,这个的效果就是在原文件中删除这个标识符,但是值得注意的是这个标识符是可以通过

命令测试的。

1.2 有参数的宏定义

带参数的宏定义类似于一个函数。和函数类似,在宏定义中的参数被称为形式参数(Parameter),在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值