我一直在阅读关于链接器的工作原理以及围绕这个过程的所有内容,以便在此问题中解释我的问题(它很短,抱歉引用,但它是相关的)。
问题是: 如果在头文件中有一个变量声明(使用extern),并且我想在多个源文件中使用此变量(在每个源文件中包含头文件),我必须在某个地方提供此变量的定义。问题在于,如果我在某些源文件的主函数中提供定义,其他文件仍然看不到这个定义(这导致链接错误)。如果我在全局作用域之一中定义此外部变量,它可以正常工作,而且每个人都能看到它。
为什么?其他文件如何访问另一个文件的全局作用域?全局作用域变量不危险吗?将变量定义放在哪个范围内可以解决这样的链接错误?有人在头文件中使用这样的外部变量声明,目的是什么?
编辑:确切的示例情况在我在开头发布的链接中。
问题是: 如果在头文件中有一个变量声明(使用extern),并且我想在多个源文件中使用此变量(在每个源文件中包含头文件),我必须在某个地方提供此变量的定义。问题在于,如果我在某些源文件的主函数中提供定义,其他文件仍然看不到这个定义(这导致链接错误)。如果我在全局作用域之一中定义此外部变量,它可以正常工作,而且每个人都能看到它。
为什么?其他文件如何访问另一个文件的全局作用域?全局作用域变量不危险吗?将变量定义放在哪个范围内可以解决这样的链接错误?有人在头文件中使用这样的外部变量声明,目的是什么?
编辑:确切的示例情况在我在开头发布的链接中。