2010-04-28 63 views
1

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

是否有一个参考表是为了在链接这些TU(在创建可执行文件的过程中)链接这些重复项时创建的?

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

在此先感谢您的解释。

回答

0

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

0

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