有关内联说明符

时间:2017-10-31 12:18:17

标签: c++ inline

我在这个链接上一直在阅读C ++中的内联函数。

http://www.geeksforgeeks.org/inline-functions-cpp/

我的问题是:

  1. 内联函数是否会增加代码的大小?
  2. 哪种功能适合内联?
  3. 与ISR相比如何?如果是,则内联和ISR之间有什么区别?

2 个答案:

答案 0 :(得分:1)

C++ Super FAQ Inline function说:

  

内联函数可能会使其更大:这是代码膨胀的概念,如上所述。例如,如果系统具有100个内联   每个函数扩展到100个字节的可执行代码,并且是   在100个地方召集,增加1MB。这是1MB   引起问题?谁知道,但有可能最后1MB可以   导致系统“捶打”,这可能会减慢速度。

     

内联函数可能会使它更小:编译器通常会生成更多代码来推送/弹出寄存器/参数,而不是   内联扩展功能的主体。这种情况非常小   函数,优化器时也会出现大函数   能够通过程序删除大量冗余代码   集成 - 也就是说,当优化器能够变大时   功能小。

  1. 编译器非常智能,因此可以自动执行内联。 inline只是编译器不需要遵守的编译器提示。

  2. inline关键字与ISR无关。

答案 1 :(得分:0)

1)是的,因为它告诉编译器它可以替换那些被调用的函数定义。

2)当需要性能时,函数调用的开销与函数的工作相比太重要了。在cplusplus.com中有很好的解释:

  

遇到正常的函数调用指令,程序存储   紧随其后的指令的存储器地址   函数调用语句,将被调用的函数加载到   内存,复制参数值,跳转到内存位置   调用函数,执行函数代码,存储返回值   的功能,然后跳回到指令的地址   在执行被调用函数之前保存的。跑得太多了   时间开销。

3)我看不到内联和ISR功能之间的任何联系。