extern--请教

vicness 2009-02-10 10:37:01
各位大侠:
在c++中,可以在.h文件和.cpp用extern声明变量,在.h中是声明变量,在.cpp中也可以声明,这两个有区别吗?
例如:
test.h中声明变量如下:
extern int a;
test.cpp中声明变量如下:
extern int b;
这两种情况有区别吗?
...全文
156 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]

同意
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

65,211

社区成员

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

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