- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
? extern extern可以置于变量或者函数前,以变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。
2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为extern char a[ ]。 2)、例子分析如下,如果a[] = abcd,则外部变量a=0(abcd的ASCII码值),*a显然没有意义 显然a指向的空间(0没有意义,易出现非法内存访问。 3)、这提示我们,在使用extern时候要严格对应声明时的格式,在实际编程中,这样的错误屡见不鲜。 4)、extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
4 问题:extern 函数2 当函数提供方单方面修改函数原型时,如果使用方不知情继续沿用原来的extern申明,这样编译时编译器不会报错。但是在运行过程中,因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决? 答案与分析: 目前业界针对这种情况的处理没有一个很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供对外部接口的声明,然后调用方include该头文件,从而省去extern这一步。以避免这种错误。 宝剑有双锋,对extern的应用,不同的场合应该选择不同的做法。
5 问题:extern “C” 在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?
答案与分析: C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。 下面是一个标准的写法://在.h文件的头上#ifdef __cplusplus#if __cplusplusextern C{ #endif #endif /* __cplusplus */ …//.h文件结束的地方 #ifdef __cplusplus #if __cplusplus}#endif#endif /* __cplusplus */?
3 问题:extern 函数1 常常见extern放在函数的前面成为函数声明的一部分,那么,C语言的关键字extern在函数的声明中起什么作用? 答案与分析: 如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:extern int f(); 和int f();
当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,我比较习惯在所有的函数声明前添加extern修饰。C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
一、面向过程设计中的static
1、静态全局变量
在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:
//Example 1
#include iostream.h
void fn();
static int n; //定义静态全局变量
void main()
{ n=20;
coutnendl;
fn();
}
void fn()
{ n++;
coutnendl;
}
静态全局变量有以下特点:
该变量在全局数据区分配内存;
未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);
静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
静态变量都在全局数据区分配内存,包括后面
您可能关注的文档
- Excel课程摘要卡.doc
- excel输入编辑技巧44例.doc
- EXCEl里合并单元格有没有快捷键.doc
- EXCEL高手之路.doc
- Exchange2003-2010迁移系列之四,部署第一台ExchangeCASHUB服务.doc
- Exchange2007LCR配置.doc
- Exchange2010卸载.docx
- Exchange2003安装全图解.doc
- Exchange代理发送邮件配置.doc
- excle中如何生成随机数.doc
- 基于开原市土改当事人口述:土改后富农地位重塑的多维度因素剖析.docx
- 不同化感抗源水稻抗稗草率与稳定性研究:基于生态调控的品种筛选与机制解析.docx
- HXD3D型电力机车RS485总线电磁兼容性的深度剖析与优化策略.docx
- 大白菜卷叶和矮小突变体dcl1的基因定位与转录组解析:探索生长发育调控机制.docx
- 从认知维度剖析指示语主观性:理论、机制与应用.docx
- 贵州白马洞铀矿床黑色-红色蚀变的形成机制及其对铀成矿的指示意义.docx
- 基于PXI的车载音视频产品可靠性试验平台的创新设计与实践.docx
- VPN的网络传输性能优化关键技术的研究与实现.docx
- 高、低语境文化在室内设计中的交融与创新:理论、实践与展望.docx
- 探秘Gbx2:小鼠胚胎干细胞naïve多能性维持与诱导的分子密码.docx
最近下载
- ISO 14067-2018 :温室气体 产品碳足迹 量化要求和指南(中文版).docx VIP
- 黑龙江八一农垦大学《高等数学(II)》2025 - 2026学年第一学期期末试卷.docx VIP
- DB42T 2141.1-2023 农村地区全域国土综合整治规划设计导则 第1部分:总则.docx VIP
- 《网上支付与结算》期末考试试卷(A卷).docx VIP
- 计数型MSA测量系统分析报告(模板).xls VIP
- 电线电缆资质认证认可介绍.doc VIP
- 第12课 明朝的兴亡 (5).pptx VIP
- 乙醇的MSDS.doc VIP
- 旅游类短视频对旅游目的地影响.docx VIP
- Methanol甲醇MSDS.docx VIP
原创力文档


文档评论(0)