外部内联函数必须在所有翻译单元中具有相同的地址.这是怎么回事?

Let*_*_Be 6 c++ inline

根据该标准,extern内联函数在所有翻译单元中必须具有相同的地址.

如何在编译器中实现?我的意思是当我编译一些翻译单元时,我不知道其他TU会是什么样的.那我怎么能到处都有相同的地址呢?

Mik*_*our 6

这取决于实现,但通常由链接器解决.每个编译的翻译单元将生成一个包含该函数副本的目标文件,以某种方式标记,以便链接器知道它应该期望(和接受)重复.链接器将包含其中一个,丢弃其他链接器,并解析对该函数的任何引用.