外部声明变量和全局变量之间的区别

时间:2020-08-27 15:00:12

标签: c++ c oop variables

对于在hxx文件中使用 extern 声明变量,然后在每个cxx文件中定义变量的好处,我感到困惑。

我知道我们确实在这里保存内存(如果有10个源文件,而不是10倍的内存,我们只是分配一次)。除此之外, extern 的其他好处是什么?它与hxx文件中声明的普通全局变量有何不同?

我理解 extern 对变量的作用是:用extern声明时,变量只声明一次,但可以定义多次。就像为每个源文件具有单独的变量而无需一次又一次地分配内存。

我在这里丢失了一些内容,在这里获得一些详细的解释将非常好。谢谢

1 个答案:

答案 0 :(得分:2)

我了解extern对变量的作用是:用extern声明时,变量只声明一次,但可以定义多次。

不,那是不正确的。

通常,一次一个源文件中定义对象或功能。

在与该源文件关联的头文件中声明。该头文件由其他源文件包括以包含该声明。该声明使编译器在编译其他源文件时了解有关对象或函数的信息。它没有定义对象或功能。它只是提供了使用对象或函数所需的编译器信息。

(头文件也应该包含在与其关联的源文件中。这样,编译器可以在同一编译中看到声明和定义,因此如果存在差异,则将打印警告。)

这就像为每个源文件具有单独的变量而无需一次又一次地分配内存。

否,只有一个定义,因此每个源文件没有单独的对象。多个源文件使用(共享)一个对象。