加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

内联函数及其实现

发布时间:2020-12-16 10:25:33 所属栏目:百科 来源:网络整理
导读:对于那些回答的人来说,这应该是容易的.这个问题有一个合乎逻辑的答案,但我想要问一下验证. 我对程序流程如何工作的理解很简单.函数及其相关指令位于存储器中的某个点.内存中的此位置是用于存储此类指令的单个位置.调用时,该函数的第一条指令的位置存储在程序
对于那些回答的人来说,这应该是容易的.这个问题有一个合乎逻辑的答案,但我想要问一下验证.

我对程序流程如何工作的理解很简单.函数及其相关指令位于存储器中的某个点.内存中的此位置是用于存储此类指令的单个位置.调用时,该函数的第一条指令的位置存储在程序流程中.该内存指针指示CPU在内存中的位置查找所需功能的指令.跳转到该位置并执行指令后,恢复正常的程序流程并且CPU跳回原始地址指令所在的位置以继续执行连续指令.

据我所知,内联函数被粘贴到调用它们的位置.因此,当写入源文件并定义内联函数时,实际上在内存中存在多个位置,此函数的指令集位于该位置(即它的确切位置).那么,就是说内存中没有类似于非内联函数的源位置?

此外,在编译过程中,编译器是否只是将内联函数准确地粘贴到调用的位置,并使用传递给它的参数删除/替换函数定义的任意参数名称?

解决方法

It is my understanding that inline functions are pasted right into the locations in which they were called.

这取决于.即使函数是内联函数,编译器实际上也可能没有内联函数.

So,that is to say there is not an source location in memory similar to that of a non-inline function?

这取决于函数的内联方式.如果在转换单元中有4个内联函数调用,则编译器可能会决定内联其中一个是正常的,其余调用应使用常规函数调用.所以在这种情况下,有一个“源”位置和一个内联位置.

Further,during the compiling process,does the compiler just paste the inline function exactly where it was called and remove/replace the arbitrary argument names of the function’s definition with the parameters passed to it?

内联函数必须与普通函数调用具有相同的含义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读