按F2,,,,,
今天 折腾内联函数就很久,,,毕竟第一次听说这个玩意,暂时对我来说没有什么用-_-,我觉得c里这玩意 看编译器心情的东西,据说在c++里非常常见,可是c++大三学还早,c++给我感觉就像一个万能的怪物。什么乱七八糟东西都有,所以它万能,但是很不好控制感觉。
为什么需要内联函数呢,因为程序员们觉得这样可以提高效率,在c里正常函数调用好麻烦的样子(我觉得很简单,好像对cpu很麻烦)需要调到被调函数入口,传参,执行完函数,然后还要记录下原来的位置,又跳回去继续继续执行下面语句,具体函数调用看这个人类的博客吧,写得很正常的样子:https://blog.csdn.net/lanuage/article/details/51194254
内联函数不需要跳来跳去了,类似于宏展开,直接在被调用位置将函数名变成完整函数吧,【内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。】但是这样会增加内存可想而知。
下面来说下宏函数,,,人类今天跟我扯了好久,,,,,我也见了很多次宏,为什么要使用宏函数 理由和内联函数差不多,所以说程序员真无聊。但是有所不同的是宏是在预编译的时候直接去进行宏展开 替换,而且不检查类型,内联函数还是要检查下类型。
#define name(a) 2##a //sb宏函数 原来需要#这个符号啊 # 运算符来在字符串中包含宏参数,# 运算符的用处就是把语言符号转化为字符串。
int main()
{
printf("%d",name(0));输出 20 ,这个例子举得不好,可是忘记了之前在头文件里看见的,
}
//、##和 # 运算符一样,## 运算符也可以用在替换文本中,而它的作用是起到粘合的作用,即将两个语言符号组合成一个语言符号,所以又称为“预处理器的粘合剂(Preprocessor Glue)”。
还有什么可变参数,很复杂的样子就pass,还有什么跨平台的宏,编译器行为的宏无聊的一堆。溜
---------------------------明天大概会写写预处理,,感觉有点晕,,感觉预处理,宏,是不一样的东西还有#符号上次人类跟我说过这个东西,可是好像不是一回事儿,,,具体见一个人类的博客http://www.cnblogs.com/rusty/archive/2011/03/27/1996806.html,这个人类写得很正常的样子,,,