【发布时间】:2012-12-30 07:49:28
【问题描述】:
我一直在阅读有关链接器如何工作以及围绕此过程的所有内容,以便在this(link) 问题中解释我的问题(很短,对参考感到抱歉,但它是相关的)。
问题: 如果在头文件中我有一个变量声明(使用 extern),并且我想在多个源文件中使用这个变量(#包括每个源文件中的头文件),我必须在某处为这个变量提供一个定义。问题是,如果我在某些源文件的主函数中提供定义,例如,其他文件仍然没有“看到”这个定义(这会导致链接错误)。如果我在其中一个全局范围内定义这个 extern 变量,它就可以正常工作,并且每个人都可以看到它。
为什么?其他文件如何访问另一个文件的全局范围?全局范围变量不是危险的吗?将变量定义放在其他什么范围内可以解决这样的链接错误?有人在标头中使用此类外部变量声明吗?出于什么目的?
编辑:确切的示例情况在我开头发布的链接中
【问题讨论】:
-
我不完全确定您要解释什么。您到底要在哪里定义变量?你如何定义它的一个例子会很好。
-
它在问题开头的链接中
-
在实际问题的代码中,接受的答案中没有正确的声明,您是否要将变量定义从 main() 函数体外部移动到 main() 函数体?如果,那么哈珀的答案是正确的。该变量仅存在于该函数内部。
标签: c++ header linker declaration extern