【转】C语言static和extern以及include解释

extern(外部)

1.对函数
     完整的定义一个外部函数(可以省略extern)
     完整的声明一个外部函数(可以省略extern)
2.对变量
     只能声明一个外部变量(不能省略extern
     在函数里面定义extern的变量表示应用程序中其他地方的变量(引用某个全局变量,并非定义)
 
static(内部)
1.对函数
     定义内部函数(不能省略static)
     声明内部函数(不能省略static)
2.对变量
     static修饰全局变量:
          1.)定义一个内部内部变量
      static修饰的局部变量的生命周期:
          1.)第一次使用这个变量的时候才会创建(不会重复创建)
          2.)程序退出的时候,才会销毁
 
include和static的解释:
 
include的作用就是把.h文件的内容展开在对应的地方,当定义的函数或变量在外部应用的很多时,include就会比较方便。
 
 

再议extern和include的作用

 

先引入一下题啊,主要是看到有人这样写


 

我个人觉的这样写没什么意思,没有体现出了extern的特性。

  为什么我要这样说,先谈谈include,总是有人觉得这个东西很神秘,很特殊不知道他干了什么。其实它没有我们想象的那么神秘,它就是把包含的文件完全的放到当前文件展开。在什么时候展开那在预编译简单就会完全的展开。对于上面的图片里的例子就是把1.c里面的俩句代码放到了2.c。
  extern这个词是干什么的那?它是你在写C语言的时候写了几个文件,比如上面,1.c和2.c 但是注意在2.c里面人家可不用包含了,这个时候就要用extern这个词来声明。告诉编译器下面用到的变量虽然我在。但注意extern只能修饰全局变量
  当前文件中并没有定义,但是我在其他文件是定义了的,编译器你就不要报错了。它的作用就是这个,回到我们上面说的 “我个人觉的这样写没什么意思,没有体现出了extern的特性。“大家想想就了可以理解extern是修饰俩个文件的,而你用include已经成了一个一个文件,就没必要修饰了。

 还没完,那include就没用了吗?在有较多的extern引入的时候我们可以写一个头文件,头文件里面写上这一堆extern。然后在包进去,然后在预编译的时候展开,就和我们写在里面一样。

 

 

函数中的extern 

对于函数的extern其实和上面的大同小异,我们平常说函数中的声明,大家应该都知道,那就是函数在下面定义的时候需要在上面声明。这时是不用extern的。

但是如果是在外部定义了函数,你还不加,那么就会在编译的时候报警告

下面是我写的俩种截图 下面的那种我对声明又进一步封装到头文件。

第二种写法

 

 
posted @ 2020-02-25 16:22  博客园—哆啦A梦  阅读(837)  评论(0)    收藏  举报