1

编译器如何跨翻译单元检测重复定义。假设头文件中有一个 extern const 变量声明。
如果在多个翻译单元中使用此头文件 - 每个翻译单元都有单独的定义 - 每个 TU 对象创建都会成功,但是在创建最终可执行文件时会引发错误。

在链接每个 TU 时(在创建可执行文件期间)是否创建了一个参考表来说明这些重复?

有关此主题的任何链接都会有所帮助。

提前感谢您的解释。

4

2 回答 2

0

是的,链接器构建了一个未解析的外部引用列表,然后最终继续尝试逐个解析它们。

于 2010-04-28T18:29:02.997 回答
0

通常这将由链接器而不是编译器检测到。然后,链接器可以合并变量(通常需要草率的 C/C++ 编码)或报告错误。

于 2010-04-28T18:30:11.227 回答