extern的作用

mac2022-06-30  32

我们知道C和C++是用的按文件编译的方式 也就是一个cpp是一个整体

那么他们互相之间 对彼此文件之间的状况是完全透明的 因此你即便在两个.cpp文件里 定义一个名字的全局变量

各自编译各自的文件都是没问题的,但是我们知道全局变量本意是作用于整个程序的 即作用于程序中所有文件的

所以它不应该重名 因此在编译后链接成一个.exe文件 时 就会发现一个程序有两个同名的全局变量 这样就会出问题

无法生成最终文件,因此 如果我们在 B.cpp中 定义了一个全局变量 g_

b,那么我们如果想在A.cpp中用B.cpp中的g_b 我们可以 用extern 修饰g_b而不用再A.cpp中定义它 ,extern相当于告诉编译器 在另一个文件中已经实例了这个全局变量了 

也因为按文件编译使得C++并不是完全的面向对象的语言。

 

最新回复(0)