我在 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/