externextern用法

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

C语言中 extern 的用法,最好有示例,概念少说点

extern我用了几次,主要是声明外部变量的作用,我用的也是在头文件中。

比如说,你有一个project.c,lib.c,lib.h,三个文件,在lib.h里面有lib.c的变量定义,比如a[4]数组,也就是说这个变量是lib.c的全局变量,当我在project.c文件中要用到的时候,即使a【4】是全局变量,但是也只是在它本文件里面有用,别的文件没法用。

但这时project.c要用怎么办呢?在project.c里面改用extern 声明a【4】,他会自动找到别的文件里面的a【4】,这也是为什么如果一个文件有全局变量或者是函数只在本文件里面用的时候要加上static,就是为了防止被别的文件extern声明给弄过去了。

extern声明是不分配内存的,只在别的文件中找有没有定义。

我做过这样的实验,在文件project.c里面用extern声明a【4】,同时又在lib.c里面extern声明a【4】,这导致在链接的时候提示错误,说没有找到a【4】。

所以总的来说extern就是用来使用 别的地方的变量的。

c++中 extern 是什么含义?

用例子给你示范 // 1.cpp int x = 10; // 2.cpp 注意没有包含1.cpp #include using namespace std; extern int x; int main () { cout << x << endl; } //则输出10 两个文件同在一个项目(project)中,你不包含某个文件(cpp)而可以用它内部定义的变量,(里是.pp不是.h, 因为在.h中定义的数据不能在.cpp中用除非这个.cpp包含这个.h文件) 例: // 1.h #include void print() { std::cout << "hello!" << std::endl; } // 2.cpp #include using namespace std; // 以上两句在这个例子中可以不要 extern void print(); int main () { print(); } 就会出错因为1.h中的void print();在不包含它的文件中是不可调用的,即使在声明了extern 也于事无补,如果你将这个例子中的1.h名字换成1.cpp就对了! 从这些可以看出来,extern在这里起的作用是告诉编译器,你这个print()已经在某个.cpp中已经定义了,这里只不过是声明一下有这个东西,然后拿来用一下。

定义只能出现一次,声明却可出现多次,也就是说extern声明可在多个文件中用(包括.h) 还有,你还可以屏蔽extern声明,如第二个例子中的第二个.cpp文件可以改成 #include using namespace std; // 这里以上两句不能省略,因为,这里extern void print();函数已经不起作用了,在这里调用的而是本文件中定义的void print()函数,其中用到了cout,endl;他们来源于std:: extern void print(); void print() { cout << "world!" << endl; } int main () { print(); } // 输出结果为world! 还有一个extern "C"就不用说了,用这个可以允许C++程序中调用C的函数!

C语言中extern用法

#include "123.h"/*123.h中放你的其他函数*/ extern int func();/*这句跟用int func();一样,extern只起到标识作用,好让我们知道是外部函数而已*/ main() { …… } 你肯定是没加#include "123.h"吧,要是没有它,你的程序也不知道去哪找func()啊,不能光用extern

static与extern都是什么意思,有什么作用?

static 和 extern都是用来修饰全局的变量(局部的static实际也是全局的) static修饰的变量 只有你的包含那个变量定义的源代码文件可以访问 extern定义的变量的哪个源文件都可以访问 只要声明了就可以

extern用法

extern 都是对全局变量来说的,你既然将a(int)已经定义到了main函数中了,也就是说:a 的作用域就是main了,不然作用域不久不起作用了吗 如果你要将main中的那个int a用到f中,那是不可以的,但是你可以讲a(int)声明(定义)为全局变量,然后用extern就可以了(如果f和main不在一个.cpp中) 至于extern的具体用法,我曾经回答过这个问题,而且答案非常详细,/z/q660859045.htm (snpsprcsac)你可以看看! .h和.cpp是“独立”的,但有不是完全独立的,.h中用extern就可以用.cpp中定义的变量(常量)了,但翻过了不行(我在extern中也说到了这个问题)还有就是, 一般情况下,如果有程序中有类的话,类的定义在*.h中,对应的就有类的实现在*.cpp(名字一样)中! 你最后一个问题,问的不是很清楚,不知对不对的上!

hostkvm:7折优惠-香港VPS韩国VPS,8折优惠-日本软银、美国CN2 GIA、新加坡直连VPS

hostkvm本月对香港国际线路的VPS、韩国CN2+bgp线路的VPS正在做7折终身优惠,对日本软银线路、美国CN2 GIA线路、新加坡直连线路的VPS进行8折终身优惠促销。所有VPS从4G内存开始支持Windows系统,当然主流Linux发行版是绝对不会缺席的!官方网站:https://hostkvm.com香港国际线路、韩国,7折优惠码:2021summer日本、美国、新加坡,8折优惠码:2...

Megalayer(48元)新增 美国CN2优化线路特价服务器和VPS方案

Megalayer 商家算是新晋的服务商,商家才开始的时候主要是以香港、美国独立服务器。后来有新增菲律宾机房,包括有VPS云服务器、独立服务器、站群服务器等产品。线路上有CN2优化带宽、全向带宽和国际带宽,这里有看到商家的特价方案有增加至9个,之前是四个的。在这篇文章中,我来整理看看。第一、香港服务器系列这里香港服务器会根据带宽的不同区别。我这里将香港机房的都整理到一个系列里。核心内存硬盘IP带宽...

pacificrack:2021年七夕VPS特别促销,$13.14/年,2G内存/2核/60gSSD/1T流量,支持Windows

pacificrack官方在搞2021年七夕促销,两款便宜vps给的配置都是挺不错的,依旧是接入1Gbps带宽,KVM虚拟、纯SSD raid10阵列,支持包括Linux、Windows 7、10、server2003、2008、2012、2016、2019在内多种操作系统。本次促销的VPS请特别注意限制条件,见本文末尾!官方网站:https://pacificrack.com支持PayPal、支...

extern为你推荐
我的文档win10我的文档怎么还原默认阈值电压典型MOS管的阈值电压是多少网络的好处网络的优点?注册电子邮件怎样注册电子邮箱u盾证书“U盾”和“数字证书”有什么区别?化学键理论什么是化学键?化学键是怎样形成的?哪些物质有化学键?那些没有?背投广告搜狐的广告类型有哪些?报价多少?支付宝安全证书下载怎么下载支付宝安装控件说明书之家网站索尼A200说明书哪里有最好的电脑操作系统什么版本的电脑系统好用
过期备案域名查询 vps教程 免费注册网站域名 网易域名邮箱 hkbn l5639 私有云存储 dux 空间论坛 ntfs格式分区 linux使用教程 360云服务 web服务器是什么 广州虚拟主机 华为云建站 双线空间 购买空间 阿里云邮箱申请 黑科云 锐速 更多