目录
1.宏函数
#define ADD(x, y) x + y //1
#define ADD(x, y) (x + y) //2
#define ADD(x, y) (x) + (y) //3
#define ADD(x, y) ((x) + (y)) //4
#define ADD(x, y) ((x) + (y)); //5
宏:对文本的替换,这里只有第四的是正确的
外面的()反例: ADD(1, 2) * 3 1,3,5
里面() 反例:ADD(1 | 2, 3 & 4); 2
1.1宏函数缺点
没法调试,代码容易误用,类型多样
1.2宏函数优点
增强代码复用性,提高性能
2.内联函数
inline int ADD(int x, int y)
{
return x + y;
}
inline是对编译器的一个建议
声明和定义的分离会导致链接错误
发现和普通的没去别?可是也就只有一行代码
设置的问题(debug下)
这样好像就是成功了,和上面的不一样了
哦哦哦
这样就行了,前面的ADD没有东西,只有一个return,发现这里是没有call
2.1内联函数缺点
多次掉用的话,指令个数会多,
普通的ADD就一个call,到相应的代码段里找到函数,编译器会将函数转化成对应的指令