externc++ vc++ 中的 extern 是什么意思,具体的用法

extern  时间:2021-08-19  阅读:()

c语言中extern是什么意思

表示这个声明/定义的变量、函数在此文件外部,编译器编译此项的时候不检查该项是否存在,只在最后链接的时候判断这个变量、函数是否存在。

这个关键字通常在头文件出现,因为头文件可能会在多处被引用,而同一签名的函数和变量定义只能出现一次,也可能出现在引用了外部库函数的时候

extern在函数声明中是什么意思?

extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用、记住。

下列语句: extern int a; 就是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。

变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。

另外,extern也可用来进行链接指定。

如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。

即下述两个函数声明没有明显的区别: extern int f(); 和int f(); 当然,这样的用处还是有的,就是在程序中取代include“*.h”来声明函数,在一些复杂的项目中,可以在所有的函数声明前添加extern修饰。

static和extern的区别

static: 一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。

1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。

全局静态变量有以下特点。

a.在全局数据区分配内存。

b.如果没有初始化,其默认值为0. c.该变量在本文件内从定义开始到文件结束可见,且在外部文件不可见. 2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下: a.该变量在全局数据区分配内存。

b.它始终驻留在全局数据区,直到程序运行结束。

c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

3、定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数,其特点如下: a.静态函数只能在本源文件中使用 b.在文件作用域中声明的inline函数默认为static类型 二、在C++中新增了两种作用:定义静态数据成员或静态函数成员。

静态数据成员: a.内存分配:静态数据成员在程序的全局数据区去分配。

b.初始化和定义: 静态数据成员必须在类定义外初始化,但const静态数据成员除外,const静态数据成员可以在类体中初始化(也可以像非const一样在类外初始化)。

例如: class c1 { public: private: static int num; static const string name = "chio"; }; int c1::num = 20;//没有const修饰的静态成员数据,必须类外定义并且初始化 静态函数成员: 类成员函数(无论是static成员函数或非static成员函数)都可以直接访问static数据成员,但是static成员函数只能访问static数据成员。

并且可以通过类名直接调用. extern: extern可以置于变量或函数前,以在别的文件中标识变量或函数的定义,并提示编译器遇到此变量或函数时在其他模块中寻找其定义. extern在局部函数中声明时,表示此变量,在局部函数外(包括函数外,和文件外). extern声明的变量(即文件公用的变量)最好放在头文件中 对于extern变量来说,仅仅是一个变量的声明,其并不是定义,不会分配内存空间。

extern表示将变量或函数声明为外部链接,变量默认是内部链接,函数默认是外部链接。

因此用来外部链接的函数,声明时有无extern都可以连接通过。

而全局变量则不行。

通常,在模块的头文件中,对本模块提供给其他模块引用的函数和全局变量以关键字extern声明。

c++ vc++ 中的 extern 是什么意思,具体的用法

展开全部 是外部引用,用于在一个文件中引用在其它文件中定义的变量. 比如在文件1中 int i; 在文件2中,需include文件1,再extern int i;从而使文件1的i 也可用于在C++中引用C语言中的函数和变量extern "c"

Linode十八周年及未来展望

这两天Linode发布了十八周年的博文和邮件,回顾了过去取得的成绩和对未来的展望。作为一家运营18年的VPS主机商,Linode无疑是有一些可取之处的,商家提供基于KVM架构的VPS主机,支持随时删除(按小时计费),可选包括美国、英国、新加坡、日本、印度、加拿大、德国等全球十多个数据中心,所有机器提供高出入网带宽,最低仅$5/月($0.0075/小时)。This month marks Linod...

触摸云 26元/月 ,美国200G高防云服务器

触摸云触摸云(cmzi.com),国人商家,有IDC/ISP正规资质,主营香港线路VPS、物理机等产品。本次为大家带上的是美国高防2区的套餐。去程普通线路,回程cn2 gia,均衡防御速度与防御,防御值为200G,无视UDP攻击,可选择性是否开启CC防御策略,超过峰值黑洞1-2小时。最低套餐20M起,多数套餐为50M,适合有防御型建站需求使用。美国高防2区 弹性云[大宽带]· 配置:1-16核· ...

Virmach$7.2/年,新款月抛vps上线,$3.23/半年,/1核640M内存/10 GB存储/ 1Gbps/1T流量

Virmach自上次推出了短租30天的VPS后,也就是月抛型vps,到期不能续费,直接终止服务。此次又推出为期6个月的月抛VPS,可选圣何塞和水牛城机房,适合短期有需求的用户,有兴趣的可以关注一下。VirMach是一家创办于2014年的美国商家,支持支付宝、PayPal等方式,是一家主营廉价便宜VPS服务器的品牌,隶属于Virtual Machine Solutions LLC旗下!在廉价便宜美国...

extern为你推荐
字符串常量以下正确的字符串常量是什么?A.""选项A是怎么回事销售报表销售报表的作用是什么?互联网接入互联网接入口指的是什么文件保护vivo手机文件被保护accesspoint手机APN怎么设置网不易小学生上网弊大于利查杀木马请问有什么方法查杀木马网通玩电信游戏卡怎么办玩英雄联盟家里是网通的,玩电信区很卡怎么办查看加密空间怎么看加密的qq空间安卓手机用什么安全软件好电脑管理安卓手机的软件哪个最好用
已备案域名 北京租服务器 vps优惠码 域名备案信息查询 vps.net 外国域名 外国空间 淘宝双十一2018 parseerror qq数据库下载 qq云端 万网空间购买 路由跟踪 smtp服务器地址 东莞服务器托管 免备案cdn加速 网络速度 免备案jsp空间 nnt 新疆服务器 更多