C之#define和inline的区别

1.define

  1.定义在预编译时处理的宏,只是简单的字符串替换,没有类型检查

2.inline

  1.用来定义一个内联函数,引用inline的主要原因是用它替换C语言中表示式形式的宏定义;

  2.在编译阶段完成

  3.内联函数会做类型安全检查

  4.内联函数是嵌入式代码,调用内联函数时,不是跳转到内联函数执行,而是把内联函数的代码直接写到调用位置

  5.inline函数仅用于短小的函数(逻辑不复杂,且一般小于10行的函数),可以提升一定的效率,和宏相比,inline函数更加安全可靠

  6.缺点:增加了内存空间的消耗

3.定义的内联函数只是给编译器一个建议,但是最后的决定权取决于编译器,如果内联函数的逻辑比较复杂(有循环或者递归之类),此时会内联失败。

 

猜你喜欢

转载自www.cnblogs.com/weiyouqing/p/12568562.html
今日推荐