extern--请教

vicness 2009-02-10 10:37:01
各位大侠:
在c++中,可以在.h文件和.cpp用extern声明变量,在.h中是声明变量,在.cpp中也可以声明,这两个有区别吗?
例如:
test.h中声明变量如下:
extern int a;
test.cpp中声明变量如下:
extern int b;
这两种情况有区别吗?
...全文
154 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
neeestth 2009-02-14
  • 打赏
  • 举报
回复
感觉是一样的吧
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yellowhwb 的回复:]
在h文件中声明变量很容易编译出错,报变量重复定义的错误
[/Quote]

extern用在那里是一样。
但是声明是放在.h还是.cpp还是有区别。
Big鹏 2009-02-14
  • 打赏
  • 举报
回复

没区别.至于在哪用,看具体情况:头文件中也有用的,比如:这是标准头文件中用过的extern,楼主可看下.
/* Variables */
extern int _Cdecl _doserrno;
extern char **_Cdecl environ;
extern int _Cdecl errno;
extern int _Cdecl _fmode;
extern unsigned char _Cdecl _osmajor;
extern unsigned char _Cdecl _osminor;
extern unsigned _Cdecl _psp;
extern char *_Cdecl sys_errlist[];
extern int _Cdecl sys_nerr;
extern unsigned int _Cdecl _version;

int _Cdecl __abs__(int x); /* This is an in-line function */
#define abs(x) __abs__(x)
#define atoi(s) ((int) atol (s))

捕鲸叉 2009-02-13
  • 打赏
  • 举报
回复
语义一样,.h的表包含其有CPP文件要引用一个外部变量
deerwin1986 2009-02-10
  • 打赏
  • 举报
回复
没区别。。。
deerwin1986 2009-02-10
  • 打赏
  • 举报
回复
没区别。。。
ohxf1234 2009-02-10
  • 打赏
  • 举报
回复
只要将变量定义成全局变量就行了,至于在头文件还是.c中声明没有什么太大的关系,我觉得,声明在.h中可能要好一点吧,不过声明在.cpp中也好,一眼就可以看出来是一个全局的变量
waizqfor 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 vicness 的帖子:]
各位大侠:
在c++中,可以在.h文件和.cpp用extern声明变量,在.h中是声明变量,在.cpp中也可以声明,这两个有区别吗?
例如:
test.h中声明变量如下:
extern int a;
test.cpp中声明变量如下:
extern int b;
这两种情况有区别吗?
[/Quote]
没区别啊
http://www.cnblogs.com/luliang/archive/2008/08/21/1272746.htmlLZ看看extern的使用
不过extern不要在.h文件中声明 有时候容易出错
ohxf1234 2009-02-10
  • 打赏
  • 举报
回复
我认为在头文件中声明可能更好吧
joneshong 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yellowhwb 的回复:]
在h文件中声明变量很容易编译出错,报变量重复定义的错误
[/Quote]

yellowhwb 2009-02-10
  • 打赏
  • 举报
回复
在h文件中声明变量很容易编译出错,报变量重复定义的错误
ypb362148418 2009-02-10
  • 打赏
  • 举报
回复
没有区别,都是一个声明
HelloDan 2009-02-10
  • 打赏
  • 举报
回复
我记得C++ primer里面有对这个的详细解释。你可以找来看一下。
HelloDan 2009-02-10
  • 打赏
  • 举报
回复
The extern keyword is used to inform the compiler about variables declared outside of the current scope. Variables described by extern statements will not have any space allocated for them, as they should be properly defined elsewhere.

Extern statements are frequently used to allow data to span the scope of multiple files.

http://www.cnblogs.com/SunWentao/archive/2008/11/10/1330881.html
chin_chen 2009-02-10
  • 打赏
  • 举报
回复
因该没区别吧。 看你的程序是什么样的。
hhyttppd 2009-02-10
  • 打赏
  • 举报
回复
没有区别。
extern XX是个链接符号,说明变量在别的编译单元定义。
herman~~ 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hhyttppd 的回复:]
没有区别。
extern XX是个链接符号,说明变量在别的编译单元定义。
[/Quote]

同意

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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