变量前加extern?
时间: 2023-08-10 08:48:08 浏览: 48
在C语言中,extern关键字用于声明一个变量是在其他文件中定义的,并且这个变量可以被当前文件访问和使用。这样做可以方便地在不同的文件中共享变量,避免重复定义。
具体来说,如果在一个文件中声明了一个变量,并在该文件中使用了extern关键字,那么编译器会在连接时在其他文件中查找该变量的定义。如果找到了,就将该变量的地址链接到当前文件中的引用处;如果没有找到,就会出现链接错误。
需要注意的是,extern关键字只是用于声明变量,并不会为变量分配存储空间。因此,如果要在多个文件中共享变量,必须在其中一个文件中定义该变量,而其他文件中只需要使用extern关键字进行声明即可。
相关问题
全局变量前加extern与不加extern的作用
全局变量前加`extern`关键字的作用是声明该变量是在其他地方定义的,告诉编译器该变量在当前文件中是一个外部变量。这样,在当前文件中使用该全局变量时,编译器会在连接阶段去找到真正的定义。
不加`extern`关键字的全局变量声明会默认认为是定义,如果在多个文件中都包含了该全局变量的定义,会导致重复定义的错误。
总结起来,加上`extern`关键字可以使得全局变量的声明与定义分离,在多个文件中共享同一个全局变量的定义。而不加`extern`关键字则会导致多个文件中都有该全局变量的定义,从而引发重复定义的错误。
两个c文件同时在同一个变量前加extern
在两个不同的 C 文件中同时使用 `extern` 关键字声明同一个变量,可以使得这个变量的存储空间在程序的整个生命周期中只有一份,从而实现变量的共享。
具体来说,当一个变量在一个 C 文件中被定义时,如果你想在另一个 C 文件中使用它,你需要在该文件中使用 `extern` 关键字来声明这个变量,以告诉编译器这个变量已经在别处定义过了,并且不需要再分配新的存储空间。
举个例子,如果你在 `file1.c` 文件中定义了一个全局变量 `int x = 10;`,那么在 `file2.c` 文件中,你可以这样声明这个变量: `extern int x;`。这样就可以在 `file2.c` 中使用这个变量了,而不需要重新定义它。
需要注意的是,`extern` 关键字只是一个声明,它并不会创建变量的实际存储空间,因此你必须在某个地方定义这个变量。否则,在链接时会出现 undefined symbol 错误。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)