内联函数形式如下:
inline int fac(int i)
{
return i * i;
}
内联函数像普通函数一样, 要进行参考类型检查, 但执行内联函数要比执行普通函数更高效, 因为调用内联函数的地方不需要中断调用, 在编译的时候, 内联函数被嵌入到目标代码中.
适用场合:
1) 代码短小, 里面不般不包含循环, 判断语句
2) 需要被重复调用
宏定义形式如下(注意, 无分号):#define MIN(A, B) ((A) > (B) ? (B) : (A))
#define FAC(I) ((I) * (I))
宏只是进行简单的字符替换, 在预处理期间完成. 宏在C语言中很重要, 而在C++中则很少使用.
下面总结一下两者的区别:
1. 宏的字符替换在预处理期间完成(由预处理器执行), 内联函数在编译期间嵌入到目标代码(由编译器执行)
2. 内联函数更安全, 因为内联函数要进行参数类型检查, 而宏只是进行简单的字符替换
参考:
1. 《程序员面试宝典(第二版)》电子工业出版社 6.4内联函数与宏定义
2. 百度百科: 预处理