1.在使用时,宏只做简单字符串替换(编译前)。而内联函数可以进行参数类型检查(编译时),且具有返回值。
2.内联函数本身是函数,强调函数特性,具有重载等功能。
3.内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了。
1.在使用时,宏只做简单字符串替换(编译前)。而内联函数可以进行参数类型检查(编译时),且具有返回值。
2.内联函数本身是函数,强调函数特性,具有重载等功能。
3.内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了。
C语言只有宏,宏是对编译器实现复杂度/性能妥协的产物,所以它有一系列的问题,C++作为改进,引入了inline函数,但是又因为C++需要兼容C语言的代码,又保留了宏定义。