为什么对于内联函数,编译器将尝试在每个调用点生成代码
why for inline function, the compiler will try to generate code at each point of call
我目前正在通过阅读Bjarne Stroustrup Programming_使用C++的原则和实践来学习c ++的内联函数。
作者提到
(对于内联函数(编译器将尝试为 每个调用点的函数,而不是使用函数调用 使用通用代码的说明。
我不完全确定"在每个调用点为函数生成代码"与"使用函数调用指令使用通用代码"有什么区别。区分这两个概念的根本区别是什么?
对于非内联函数,函数代码的单个副本存在于内存中的某个位置,编译器在每个调用站点生成一条CALL
指令以跳转到该内存位置。 当函数退出时,执行流将跳回到调用站点。
对于内联函数,编译器会将函数代码的副本直接合并到每个调用站点的代码中。 该函数不会单独存在于内存中,并且不会生成CALL
指令来跳转到函数并返回。
相关文章:
- 无法从 C 调用C++代码而没有错误
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 从 ASM 调用C++代码中标准库的链接
- 如何从C#调用C 代码及其调用的代码
- 使用带有 MEX 包装器的帮助程序 C 文件从 MATLAB 2016 调用C++代码时出现问题
- 从 Swift 调用C++代码比调用 C 代码更"expensive"还是更慢?
- 从x64中的C#调用C 代码,所有参数都会偏移一个
- 使用C#的结构调用C 代码
- Golang:在跨平台调用C++代码
- 从 C# 调用 C/C++ 代码
- 调用 C 代码的 Win32 应用程序
- 从C#.NET应用程序调用C/C 代码
- 如何使用JNA从Android调用C/C 代码
- 当在C#中的WPF应用程序中单击一个按钮时,如何调用C 代码
- 从 C# 调用C++代码而不创建 dll
- 通过嵌入式 Python 调用C++代码
- 当我从C#代码调用C++代码时,它是线程安全的吗
- 如何从Node.js调用C++代码
- 让非托管 C++ 代码调用调用 C# 代码的托管 C++ 代码
- 使用C++中的引用从C#调用C++代码时出错