我在这个链接上一直在阅读C ++中的内联函数。
http://www.geeksforgeeks.org/inline-functions-cpp/
我的问题是:
答案 0 :(得分:1)
C++ Super FAQ Inline function说:
内联函数可能会使其更大:这是代码膨胀的概念,如上所述。例如,如果系统具有100个内联 每个函数扩展到100个字节的可执行代码,并且是 在100个地方召集,增加1MB。这是1MB 引起问题?谁知道,但有可能最后1MB可以 导致系统“捶打”,这可能会减慢速度。
内联函数可能会使它更小:编译器通常会生成更多代码来推送/弹出寄存器/参数,而不是 内联扩展功能的主体。这种情况非常小 函数,优化器时也会出现大函数 能够通过程序删除大量冗余代码 集成 - 也就是说,当优化器能够变大时 功能小。
编译器非常智能,因此可以自动执行内联。 inline
只是编译器不需要遵守的编译器提示。
inline
关键字与ISR无关。
答案 1 :(得分:0)
1)是的,因为它告诉编译器它可以替换那些被调用的函数定义。
2)当需要性能时,函数调用的开销与函数的工作相比太重要了。在cplusplus.com中有很好的解释:
遇到正常的函数调用指令,程序存储 紧随其后的指令的存储器地址 函数调用语句,将被调用的函数加载到 内存,复制参数值,跳转到内存位置 调用函数,执行函数代码,存储返回值 的功能,然后跳回到指令的地址 在执行被调用函数之前保存的。跑得太多了 时间开销。
3)我看不到内联和ISR功能之间的任何联系。