虚幻编程要面对的很大一部分代码都是用宏来书写的,包括整个虚幻的反射机制也是由宏来支撑的。
这里对宏来做一个简单的用法总结,主要还是针对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