虚幻编程准备之-宏定义的语法

虚幻编程要面对的很大一部分代码都是用宏来书写的,包括整个虚幻的反射机制也是由宏来支撑的。

这里对宏来做一个简单的用法总结,主要还是针对C++和C的宏语法。

最简形式的宏

定义

#define pi 3.14

使用

float funcSampleMacro()
{
	return pi * 10;
}

输出

31.4

带参数的宏(单参数)

定义

#define func(x) (x * 2)

使用

float funcParamerizedMacro()
{
	return func(3.14);
}

输出

6.28

带参数的宏(多参数)

定义

#define TEST(...) t(##__VA_ARGS__)

int t(float a, float b, float c)
{
	return a + b + c;
}

使用

int t(float a, float b, float c)
{
	return a + b + c;
}

int t(float a, float b)
{
	return a + b;
}

float funcMultiParaMacro()
{
	return TEST(1, 2, 3);
}

//float funcMultiParaMacro()
//{
//	return TEST(1, 2);
//}

输出

6

3

换行

定义

#define Wrap(functionName) float functionName()\
{\
	return 3.14;\
}

使用

Wrap(unnamed)
float funcWrapMacro()
{
	return unnamed();
}

输出

3.14

#号的使用

# 用来转化字符串

定义

#define TOSTRING(x) #x

使用

string funcToStringMacro()
{
	return TOSTRING(hello world);
}

输出

hello world

##号的使用

## 用来拼接

定义

#define COMBINE(x,y) x##y

使用

string funcCombineMacro()
{
	return COMBINE(func, ToStringMacro());
}

输出

hello world

内置的宏

列举

__FILE__
__LINE__
__DATE__
__TIME__
__FUNCTION__

使用

void funcBuildInMacro()
{
	cout << __FILE__ << endl;
	cout << __LINE__ << endl;
	cout << __DATE__ << endl;
	cout << __TIME__ << endl;
	cout << __FUNCTION__ << endl;
}

输出

E:\Project\CppResearchLoc\CppResearch\MacroResearch\Commen.h
66
Apr  7 2022
16:36:28
funcBuildInMacro
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Claude的羽毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值