1.内联函数是代码比较简单的函数,不能包含复杂的控制语句,并且不能调用自身。
2.宏是在预编译的时候,替换目标字符串,简单的说就是替换代码。而内联函数是在编译的时候进行代码插入,编译器会在每次调用内联函数的时候进行代码展开,这样减少了函数的调用开销,提高了效率。
3.宏定义是不会进行安全检查的,而内联函数在编译的时候会进行类型检查,内联函数满足普通函数的各个性质。比如有返回值、参数列表等。
注意:
1.每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。
2.如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
2.内联不是什么时候都能展开的,一个好的编译器将会根据函数的定义体,自动地取消不符合要求的内联。