extern关键字的作用是extern是指当前变量或函数不是本源文件内声明的,它是外部变量和外部函数。当我们在本文件中试图引用一个外部声明的全局变量或者函数的时候,可以在其前面加上extern。
extern可以修饰变量和函数,表示该变量或函数在其他的地方被定义(本源文件或其他源文件),在这里声明使用它,这样多个源文件共享变量和函数;多个C源文件的编译是独立的,所以编译器无法判断多个源文件共享的变量的类型是否一致(只能判断变量名和函数名是否一致);等到链接的时候(这个阶段已经不再进程语法检查了),多个源文件编译后的。O文件链接成一个目标文件,如果有一个以上源文件对同一变量进行了初始化则报错。
1、extern变量名,在任何函数体外声明或定义变量时,不加extern可能是定义也可能是声明,编译器选择初始化的那个(最多一个地方对它进行了初始化),如果没有初始化则任选其中一个作为定义,其他为声明,但是加extern肯定是声明;如果不想让其它源文件链接到,则需要使用static关键字。
2、extern 函数,函数默认是外部的(在函数体内或函数体外声明一个外部函数,extern关键字均可以省略)如果不想让其他源文件链接到,在函数前加static关键字。在写程序的时候一定要注意外部函数的参数类型、参数个数和返回值类型,最好保持一致
宏观的理解:通过上面的分心来看,C程序里,通过函数将功能区分开来。每个函数完成一个功能,而又将一片相关联的功能集合在一个源程序里,这些功能和相关联的功能之间通常要有联系,而这种练习就是通过static和extern进行联系的。
母差保护中为何加复合电压闭锁 母差保护加装复压闭锁
双母线接线方式母差保护出口需经复合电压闭锁,3/2接线方式母差保护出口不经电压闭锁。当母差动作后会造成该母线上所有跳闸,双母线接线(1)人阅读时间:2024-10-07双翘和翻莲表达什么(双翘和翻莲的含义)
双翘和翻莲表达虞姬听到楚歌时复杂的感情,这是一种很深很厚的爱情。电影中,段小楼被小四陷害,并逼他诬陷蝶衣,段小楼不肯,被拉去游街,此时(1)人阅读时间:2024-10-07双色球中了两个红球有钱的吗 双色球中两个红色有钱吗
双色球中了两个红球,没有钱的。最基本中奖条件是中四个红球或中一个蓝球。双色球常规奖级分为6级一等奖7个号码完全相符(6个红球和1个(1)人阅读时间:2024-10-07双生子爬楼梯说明什么(双生子爬楼梯说明什么因素对个体发展的影响)
双生子爬楼梯实验说明了成熟个体发展的影响。美国心理学家格塞尔曾经做过一个著名的实验:让一对同卵双胞胎练习爬楼梯。格塞尔认为发(1)人阅读时间:2024-10-07母差保护中为何加复合电压闭锁 母差保护加装复压闭锁
双母线接线方式母差保护出口需经复合电压闭锁,3/2接线方式母差保护出口不经电压闭锁。当母差动作后会造成该母线上所有跳闸,双母线接线..2024-10-07双翘和翻莲表达什么(双翘和翻莲的含义)
双翘和翻莲表达虞姬听到楚歌时复杂的感情,这是一种很深很厚的爱情。电影中,段小楼被小四陷害,并逼他诬陷蝶衣,段小楼不肯,被拉去游街,此时..2024-10-07双色球中了两个红球有钱的吗 双色球中两个红色有钱吗
双色球中了两个红球,没有钱的。最基本中奖条件是中四个红球或中一个蓝球。双色球常规奖级分为6级一等奖7个号码完全相符(6个红球和1个..2024-10-07双生子爬楼梯说明什么(双生子爬楼梯说明什么因素对个体发展的影响)
双生子爬楼梯实验说明了成熟个体发展的影响。美国心理学家格塞尔曾经做过一个著名的实验:让一对同卵双胞胎练习爬楼梯。格塞尔认为发..2024-10-07