带参数的宏和函数很相似,但有本质上的区别:宏展开仅仅是字符串的替换,不会对表达式进行计算;宏在编译之前就被处理掉了,它没有机会参与编译,也不会占用内存。而函数是一段可以重复使用的代码,会被编译,会给它分配内存,每次调用函数,就是执行这块内存中的代码。
宏的本质是文本替换
#include <iostream>
using namespace std;
#define SAY_WHAT(whatasd) \
void helllo##whatasd(char* whatasd)\
{ \
cout << whatasd << endl;\
}
namespace jian {
SAY_WHAT(SD);
}
namespace jian {
void foo() {
hellloSD("why");
}
}
int main()
{
jian::hellloSD("sad");
jian::foo();
system("pause");
}
参考:
https://blog.csdn.net/weixin_30823683/article/details/98192652