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(名字一样)中! 你最后一个问题,问的不是很清楚,不知对不对的上!

DogYun春节优惠:动态云7折,经典云8折,独立服务器月省100元,充100送10元

传统农历新年将至,国人主机商DogYun(狗云)发来了虎年春节优惠活动,1月31日-2月6日活动期间使用优惠码新开动态云7折,经典云8折,新开独立服务器可立减100元/月;使用优惠码新开香港独立服务器优惠100元,并次月免费;活动期间单笔充值每满100元赠送10元,还可以参与幸运大转盘每日抽取5折码,流量,余额等奖品;商家限量推出一款年付特价套餐,共100台,每个用户限1台,香港VPS年付199元...

Webhosting24:$1.48/月起,日本东京NTT直连/AMD Ryzen 高性能VPS/美国洛杉矶5950X平台大流量VPS/1Gbps端口/

Webhosting24宣布自7月1日起开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,价格依旧不变。目前来看,日本VPS国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),还是有相当大的性价比的。此外在6月30日,又新增了洛杉矶机房,CPU为AMD Ryzen 9...

Hostodo独立日提供四款特价年付VPS套餐 最低年付$13.99

前天,还有在"Hostodo商家提供两款大流量美国VPS主机 可选拉斯维加斯和迈阿密"文章中提到有提供两款流量较大的套餐,这里今天看到有发布四款庆祝独立日的七月份的活动,最低年付VPS主机13.99美元,如果有需要年付便宜VPS主机的可以选择商家。目前,Hostodo机房可选拉斯维加斯和迈阿密两个数据中心,且都是基于KVM虚拟+NVMe整列,年付送DirectAdmin授权,需要发工单申请。(如何...

extern为你推荐
安卓开发环境搭建如何搭建安卓开发环境组或资源的状态不是执行请求操作的正确状态提示 HTTP 错误 404 -文件或目录未找到。校园网络拓扑图大学校园网拓扑图accesspoint如何设置中国移动的APN(Access Point Names)接入点?双11数据2015年天猫双11总成交额是多少亿?上海网络维护公司上海嘉定网络公司 做监控的和综合布线的有那几家ldap统一用户认证介绍NIPS是什么认证?呼叫中心系统方案求呼叫中心设计方案,100坐席,具体需要些什么硬件和软件?qq空间播放器代码qq空间免费播放器代码什么是无线上网WIFI无线上网是什么意思
国际域名抢注 域名备案网站 ddos 站群服务器 56折 轻博客 服务器怎么绑定域名 512m内存 193邮箱 微信收钱 bgp双线 七夕快乐英文 服务器维护方案 共享主机 免费申请网站 umax120 空间租赁 starry 论坛主机 中国电信测速网站 更多