在网上查找资料,学习define和inline的区别


1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查
    inline函数是函数:要做类型检查;
3:替换方式
    define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。

 define:定义预编译时处理的宏,只是简单的字符串替换,无类型检查。
 inline:1、inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义,编译阶段完成。  2、内联函数要做类型安全检查,inline是指嵌入代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数来说,inline函数可以得到一定效率的提升,和c时代的宏函数相比,inline函数更加安全可靠,这个是以增加空间的消耗为代价的。


    ps:定义内联函数只是给编译器一个建议,但是最后的决定权还是在于编译器,如果函数的逻辑比较复杂(有循环递归之类的),此时则会内联失败。根据google编程规范,内联函数一般在10行以下,而且逻辑简单。

猜你喜欢

转载自blog.csdn.net/chenwenjie666/article/details/78617843