extern在函数声明中的意思

上传人:郭** 文档编号:116804626 上传时间:2019-11-17 格式:DOC 页数:2 大小:54.34KB
返回 下载 相关 举报
extern在函数声明中的意思_第1页
第1页 / 共2页
extern在函数声明中的意思_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《extern在函数声明中的意思》由会员分享,可在线阅读,更多相关《extern在函数声明中的意思(2页珍藏版)》请在金锄头文库上搜索。

1、extern在函数声明中的意思 它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,但在externintf();和intf();之间并没有实质的区别 基本解释:extern可以置于变量或者函数前以标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义此外extern也可用来进行链接指定 也就是说extern有两个作用第一个,当它与C一起连用时如:externCvoidfun(inta,intb);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C+的C+的规则在翻译这个函数名时会把fun这个名字变得面目全非可能是funaBcin

2、tint%$也可能是别的这要看编译器的脾气了(不同的编译器采用的方法不一样)为什么这么做呢因为C+支持函数的重载啊在这里不去过多的论述这个问题如果你有兴趣可以去网上搜索相信你可以得到满意的解释 第二当extern不与C在一起修饰变量或函数时如在头文件中:externintgInt;它的作用就是声明函数或全局变量的作用范围的关键字其声明的函数和变量可以在本模块活其他模块中使用记住它是一个声明不是定义也就是说B模块(编译单元)要是引用模块(编译单元)A中定义的全局变量或函数时它只要包含A模块的头文件即可,在编译阶段模块B虽然找不到该函数或变量但它不会报错它会在连接时从模块A生成的目标代码中找到此函

3、数 问题:extern变量 在一个源文件里定义了一个数组:chara6; 在另外一个文件里用下列语句进行了声明:externchar*a; 请问这样可以? 答案与分析: 1)、不可以程序运行时会告诉你非法访问原因在于指向类型T的指针并不等价于类型T的数组externchar*a声明的是一个指针变量而不是字符数组因此与实际的定义不同从而造成运行时非法访问应该将声明改为externchara 2)、例子分析如下如果a=abcd,则外部变量a=0x61626364(abcd的ASCII码值)*a显然没有意义 显然a指向的空间(0x61626364)没有意义易出现非法内存访问 3)、这提示我们在使用extern时候要严格对应声明时的格式在实际编程中这样的错误屡见不鲜 4)、extern用在变量声明中常常有这样一个作用你在*.c文件中声明了一个全局的变量这个全局的变量如果要被引用就放在*.h中并用extern来声明

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号