C/C++中关键字extren作用总结

1859人阅读 评论(0) 收藏 举报
分类:

C/C++中关键字extren作用总结

1、基本解释:

 

具体的extern的两种作用:

2、extern变量:

在使用extern时要严格对应声明时的格式,在实际编程中这样

的错误屡见不鲜!

extern用在变量声明时常常有这样的一个作用,在.c文件中声明了一个全局变量,这个全局变量如果要被引用,就要放在.h文件中并用extern声明。

3、单方面修改函数原型:

函数提供单方面修改函数原型时,如果使用方不知情继续沿用原来extern的声明,这样编译器不会报错,但是在运行过程中,因为少了或者多了输入参数,往往会造成系统错误,这样就说明,对extern的使用在不同的场合应该选择不同的做法!

 4、extern 'C':

在C环境下使用C函数的时候,常常会出现编译器无法找到obj模块中C函数的定义,从而导致链接失败的情况,应该如何解决这种情况呢?

C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到函数的情况,此时将C函数要用extern “C”。

 extern   "C"用在C++里表示,被其修饰的函数,类,结构在编译时按照C的编译规则进行

进行链接指定,这告诉编译器,请保持我的函数名称,不要给我生成用于链接的中间函数名。

5、extern 函数声明:

常常见extern放在函数的前面成为函数的一部分。如果函数的声明中常带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其他作用。在复杂的项目中,把所有的函数声明前加上extern是一个好习惯!并且最好只在头文件中做声明。

6、extern 与static:

(1)extern表明该变量在别的地方已经定义过了,在这里要使用那个变量。

(2)static表示静态的变量,分配内存的时候存储在静态区,不存储在栈上。

 static 作用范围是内部连接的关系,extern有点相反.它和对象本身是分开存储的,extern也是分开存储的,但是extern可以被其他的对象用extern引用,static不可以,只允许对象本身用它.具体差别首先,staticextern是一对水火不容的家伙,也就是说externstatic不能同时修饰一个变量;其次,static修饰的全局变量声明与定义同时进行,也就是说当你在头文件中使用static声明了全局变量后,它也同时被定义了;最后,static修饰全局变量的作用域只能是本身的编译单元,也就是说它的全局只对本编译单元有效,其他编译单元则看不到他。

7、extern 与const:

 C++const修饰的全局常量有跟static相同的特性,即它们只能作用于本编译模块中,但是const可以与extern连用来声明该常量可以作用于其他编译模块中
所以当const单独使用时它就与static相同,而当与extern一起合作的时候,它的特性就跟extern的一样了!所以对const我没有什么可以过多的描述,我只是想提醒你,const char* g_str = "123456" const char g_str[] ="123465"是不同的, 前面那个const修饰的是char *而不是g_str,它的g_str并不是常量,它被看做是一个定义了的全局变量(可以被其他编译单元使用), 所以如果你像让char*g_str遵守const的全局常量的规则,最好这么定义const char* const g_str="123456"。

感觉内容虽然多,但是掌握之后,是不是也没有那么难呢?继续加油吧!

 

 

 

 

 

 

 

 

 

查看评论

const与extren大全

1.       const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安...
  • xiantongyuan
  • xiantongyuan
  • 2007-08-29 11:51:00
  • 1022

黑马程序员------C语言程序 const、static和extren 及内存管理

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、关键字const     1.const介绍      const是一个类型修饰符 使用co...
  • Chxinyu92
  • Chxinyu92
  • 2015-07-27 00:33:09
  • 334

C/C++中extern关键字详解

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern声明不是定义,即不分配存储空间。 先来看一段代码 /* basic_stdy...
  • big_bit
  • big_bit
  • 2016-06-06 15:54:48
  • 10456

extern使用方法总结!

 extern   在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:     extern   函数原型;     这样...
  • cameracanon
  • cameracanon
  • 2009-04-10 09:43:00
  • 107268

extern C作用总结

extern C使用主要用与在C++代码中调用的C函数的声明,或C++中编译的函数要在C中调用,也即是导入C形式的函数库或者提供C类型的库给C调用,...
  • wangjiaoyu250
  • wangjiaoyu250
  • 2015-01-17 19:48:31
  • 1536

C/C++中关键字extren作用总结

C/C++中关键字extren作用总结
  • yx20130919
  • yx20130919
  • 2016-06-01 17:08:04
  • 1859

C++对于函数名重载的要点以及extren "C"

C++ extern"C" 倾轧
  • a568478312
  • a568478312
  • 2017-08-09 15:17:55
  • 248

C/C++中static和const关键字的作用总结

static 关键字至少有下列 n 个作用:   (1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,因此其值在下次调用时 仍维持上次的值;   ...
  • u010193457
  • u010193457
  • 2015-11-05 13:25:08
  • 1197

C语言中关键字extern的作用

 1 基本解释   extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。   另外,extern也可用来进行链接指定。2 问题...
  • xiaozhi_su
  • xiaozhi_su
  • 2009-05-09 13:56:00
  • 13333

uc<em>ren</em> js 框架

uc<em>ren</em> js 框架 立即下载 上传者: daocaoren287693892 时间: 2009-04-20 综合评分: 5 积分/C币:3 国人开发的Javascript框架 Uc<em>ren</em> UI组件(<em>ext</em> jquery uc...
  • 2018年04月13日 00:00
    个人资料
    等级:
    访问量: 1万+
    积分: 678
    排名: 7万+
    文章存档
    最新评论