这个问题在这里已经有了答案:
extern and global in c
(5 个回答)
1年前关闭。
我对在 hxx 文件中使用 extern 声明变量然后在每个 cxx 文件中定义它有什么好处感到困惑。
我知道我们确实在这里节省了内存(如果有 10 个源文件,而不是 10 倍的内存,我们只是分配一次)。除此之外,他们还有其他广泛的 extern 好处吗?它与在 hxx 文件中声明的普通全局变量有何不同?
我理解 extern 对变量的作用是:使用 extern 声明时,变量只声明一次,但可以定义多次。就像为每个源文件设置单独的变量一样,无需一次又一次地分配内存。
我在这里遗漏了一些东西,在这里得到一些详细的解释会很棒。谢谢
最佳答案
What i understand extern does to a variable is: When declared with extern, a variable is just declared once but can be defined multiple times.
不,这是不正确的。
一般定义一个对象或函数一次 , 在 一个 源文件。
它在与该源文件关联的头文件中声明。该头文件包含在其他源文件中以包含该声明。该声明使编译器在编译其他源文件时知道有关对象或函数的信息。它没有定义对象或功能。它只是为编译器提供了使用对象或函数所需的信息。
(头文件也应该包含在与之关联的源文件中。这样编译器可以在同一编译中同时看到声明和定义,因此如果存在差异,它将打印警告。)
Its like having separate variable for each of the source files without allocating memory again and again.
不,只有一个定义,因此每个源文件都没有单独的对象。多个源文件使用(共享)一个对象。
关于c++ - extern 声明变量和全局变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63618823/