c语言中extern有什么用?怎么用啊?

ssjssh 2013-07-13 03:56:28
如题,据说用extern可以导入变量,不过不是用include就可以了吗?
...全文
3670 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2013-07-13
  • 打赏
  • 举报
回复
extern貌似不是必须的。
正在无聊中 2013-07-13
  • 打赏
  • 举报
回复
引用 5 楼 ssjssh 的回复:
[quote=引用 3 楼 lgbxyz 的回复:] 最好不要在头文件中定义变量 关键字----extern 修饰变量:只能用于扩展没有被static关键字修饰的全局变量。 默认情况下全局变量只能在定义它的文件中使用(从定义该全局变量开始到所在文件的文件尾), 但如果在另一个文件中将这个变量声明为外部变量,那么这个变量的作用域将被扩展到另外一个文件中。 也可以在定义全局变量之前声明该变量,从而在文件中可以在定义该全局变量前使用该全局变量。 修饰函数:在定义函数时如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 extern“C”的用法,属于 C++的范畴
也就是说变量的作用域是整个文件,而函数的默认作用域是整个程序。如果在一个文件中要使用其他文件中定义的变量时就要使用extern首先来声明才能使用,如果不加的话就会出现重新定义的问题。另外,变量不应该放在头文件中。也就是说,使用extern引用的变量都是从源文件来的。我这样理解对吗?[/quote] 函数的作用域也是整个文件 需要引用外文件的函数需要声明(类似于下面的:)

返回值 函数名(形参列表);
加不加extern都可以 但是变量必须加 函数声明一般放在头文件里面 extern 变量;也可以放在头文件
ssjssh 2013-07-13
  • 打赏
  • 举报
回复
引用 3 楼 lgbxyz 的回复:
最好不要在头文件中定义变量 关键字----extern 修饰变量:只能用于扩展没有被static关键字修饰的全局变量。 默认情况下全局变量只能在定义它的文件中使用(从定义该全局变量开始到所在文件的文件尾), 但如果在另一个文件中将这个变量声明为外部变量,那么这个变量的作用域将被扩展到另外一个文件中。 也可以在定义全局变量之前声明该变量,从而在文件中可以在定义该全局变量前使用该全局变量。 修饰函数:在定义函数时如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 extern“C”的用法,属于 C++的范畴
也就是说变量的作用域是整个文件,而函数的默认作用域是整个程序。如果在一个文件中要使用其他文件中定义的变量时就要使用extern首先来声明才能使用,如果不加的话就会出现重新定义的问题。另外,变量不应该放在头文件中。也就是说,使用extern引用的变量都是从源文件来的。我这样理解对吗?
Jackie_Zhu 2013-07-13
  • 打赏
  • 举报
回复
extern就是告诉编译器,有这么个东西,不然你用到其他cpp的东西编译器会找不到。。至于在哪里,那是连接器的事情了。。。。
LubinLew 2013-07-13
  • 打赏
  • 举报
回复
最好不要在头文件中定义变量 关键字----extern 修饰变量:只能用于扩展没有被static关键字修饰的全局变量。 默认情况下全局变量只能在定义它的文件中使用(从定义该全局变量开始到所在文件的文件尾), 但如果在另一个文件中将这个变量声明为外部变量,那么这个变量的作用域将被扩展到另外一个文件中。 也可以在定义全局变量之前声明该变量,从而在文件中可以在定义该全局变量前使用该全局变量。 修饰函数:在定义函数时如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 extern“C”的用法,属于 C++的范畴
starytx 2013-07-13
  • 打赏
  • 举报
回复
extern顾名思义,可以将一个全局变量的作用范围扩展到其他文件中,其实相当于在该文件的一个声明,但不是一个新的变量
jun_for_linux 2013-07-13
  • 打赏
  • 举报
回复
使用extern是为了消除文件的依赖关系,如果总是使用include包含文件,是会照成文件之间的依赖关系复杂化,使用extern就是为了解决这个问题才引入的。在大型项目中,这一点十分重要,希望对你有帮助。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧