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

Gcore(75折)迈阿密E5-2623v4 CPU独立服务器

部落分享过多次G-core(gcorelabs)的产品及评测信息,以VPS主机为主,距离上一次分享商家的独立服务器还在2年多前,本月初商家针对迈阿密机房限定E5-2623v4 CPU的独立服务器推出75折优惠码,活动将在9月30日到期,这里再分享下。G-core(gcorelabs)是一家总部位于卢森堡的国外主机商,主要提供基于KVM架构的VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日...

ZJI(月付480元),香港阿里云专线服务器

ZJI是成立于2011年原Wordpress圈知名主机商—维翔主机,2018年9月更名为ZJI,主要提供香港、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册业务。本月商家针对香港阿里云线路独立服务器提供月付立减270-400元优惠码,优惠后香港独立服务器(阿里云专线)E3或者E5 CPU,SSD硬盘,最低每月仅480元起。阿里一型CPU:Intel E5-2630L...

DiyVM:香港VPS五折月付50元起,2核/2G内存/50G硬盘/2M带宽/CN2线路

diyvm怎么样?diyvm这是一家低调国人VPS主机商,成立于2009年,提供的产品包括VPS主机和独立服务器租用等,数据中心包括香港沙田、美国洛杉矶、日本大阪等,VPS主机基于XEN架构,均为国内直连线路,主机支持异地备份与自定义镜像,可提供内网IP。最近,DiyVM商家对香港机房VPS提供5折优惠码,最低2GB内存起优惠后仅需50元/月。点击进入:diyvm官方网站地址DiyVM香港机房CN...

extern为你推荐
查杀木马请问有什么方法查杀木马无线存储带wifi的sd卡怎么用查看加密空间如何才能查看加密码的qq空间解码器有什么用监控解码器是指什么?access数据库入门怎样学好数据库应用基础accessit人物怎么成为一个IT人士广州品牌网站设计广州品牌设计公司短信认证移动怎样用短信实名认证hadoop大数据平台大数据与Hadoop之间的关系hadoop大数据平台大数据集群?
上海虚拟主机 花生壳免费域名 老左博客 网通代理服务器 免费ftp空间申请 华为4核 毫秒英文 bgp双线 东莞服务器 电信托管 空间登陆首页 备案空间 带宽租赁 美国迈阿密 网站加速 江苏双线 香港ip 镇江高防服务器 fatcow 中美互联网论坛 更多