c++ - "inline function need to be DEFINED in all tranlation units"背后的基本原理是什么?

标签 c++ function inline

我在 Stroustrup 的书中读到这一行: “一个 i n l i n e 函数(§7.1.1、§10.2.9)必须在使用它的每个翻译单元中通过相同的定义(§9.2.3)进行定义。”

“需要在所有翻译单元中定义内联函数”背后的基本原理是什么? 我理解错了吗?我知道除了一个(包含定义)之外的所有翻译单元中的其他函数声明都可以。

最佳答案

从历史上看,C++ 语言编译器是基于独立翻译的原则构建的。每个翻译单元都是完全独立编译的(只有链接器才能看到整个程序)。

在这些情况下,为了执行内联,编译器必须能够在调用函数的每个翻译单元中查看函数的源代码。为此,必须在每个翻译单元中定义(即用正文声明)。

关于c++ - "inline function need to be DEFINED in all tranlation units"背后的基本原理是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12032567/

相关文章:

c++ - 跟踪 C++ 变量值的来源

c++ - 如何处理 PNG 文件中的 Gamma 校正和颜色?

javascript - 使用 PHP 在 HTML 中回显 css 和 js 的内容

c++ - 在循环中创建实例并将它们保存到另一个 vector 中的最有效方法是什么

php - 如何从数据库中获取字段值并传递给函数?

c - 如何将 float 数组和 float 作为参数传递给 C 中的函数

javascript - 调用 .apply() 后如何保留原始函数的 this 上下文?

css - 滑动可扩展内嵌菜单

c++ - 通过避免函数来提高程序速度? (C++)

c++ - Boost 程序选项和 "one of"关系