zoukankan      html  css  js  c++  java
  • 再议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的。

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

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

    第二种写法

  • 相关阅读:
    Java成神之路技术整理(长期更新)
    WEB攻击手段及防御第1篇-XSS
    JSON是什么,为什么这么流行?
    常用的 7 款 MySQL 客户端工具,你值得拥有!
    Spring的核心思想,总结得非常好!
    到底什么级别才算是高并发?
    非常详尽的 Shiro 架构解析
    7 种 JVM 垃圾收集器,看完我跪了。。
    电商那些年,我摸爬打滚出的高并发架构实战干货
    Spring Boot 把 Maven 干掉了,拥抱 Gradle!
  • 原文地址:https://www.cnblogs.com/zhangfeionline/p/5861721.html
Copyright © 2011-2022 走看看