乐趣区

关于c:C入门12多文件程序设计

Summary

1)头文件(.h)是源文件(.c)的 接口 定义文件。接口指的是可被其余文件拜访的 函数或者数据。如果 a.c 中想应用 b.c 中定义的函数或变量,就能够通过 b.h 来应用,b.h 中则声明了 b.c 中的函数和变量。

2)include 中(<>)和(””)的区别:
#include <header.h>,指的是在编译系统文件中查找头文件
#include "header.h",指的是先查找以后工程文件夹,再查找编译系统文件夹

3)头文件的一些 规定

  • 头文件中只做 函数申明 变量申明(不做具体定义)
  • 头文件中 能够定义数据类型(typedef,struct,union,enum)
  • 一个头文件能够对应于多个源文件(少数状况一对一
  • 不要应用 #include 蕴含源文件

4)再论全局变量:

  • 一般全局变量

    • 源文件中定义的全局变量能够在其余任意源文件中进行应用,如果其余源文件中定义了同名的全局元素,则会产生反复定义谬误。(因为即便没有通过 extern 申明,不可间接可见,但实质各自的作用域依然是全局的)
    • 可应用 extern 关键字在头文件中申明,并在其余文件中应用(如果不申明,则在其余源文件中不可见)
    • 留神,应用 extern 申明时的类型和变量名都必须统一,且 不能够给初始值(否则就会报反复定义谬误)。
  • 动态全局变量

    • static润饰的全局变量 只能在以后源文件中应用
    • 无奈通过 extern 关键字申明,也就没有方法在其余文件中应用

5)函数申明 语句 默认自带 extern关键字润饰;类型定义必须放在头文件里,仅仅是类型申明无奈创立变量。

6)static 函数和 static 全局变量的行为是统一的。static 关键字润饰函数使得函数具备 文件作用域 ;动态函数 无奈 在其余文件中被调用;函数设计时就须要思考是否在其余文件中应用。

多文件程序设计

问题:理论工程开发中,所有的代码都是写在同一个文件中吗?
答:很显然不是。理论的工程开发中,通常是不同工程师或不同的团队负责不同的模块,而后各自的模块组合起来实现整个工程。

多文件编译链接:

问题:不同文件之间如何互相拜访各自的程序元素?
多文件之间的互相拜访:

  • 每个文件能够定义性能 接口 可被其余文件拜访的函数或数据

    • 源文件:代码实现文件,后缀为.c
    • 头文件:源文件的接口定义文件,后缀为.h
  • 当须要应用其余文件提供的性能时,蕴含对应的头文件

    • 语法:

      • #include <header.h>,指的是 在编译系统文件中查找头文件
      • #include "header.h",指的是 先查找以后工程文件夹,再查找编译系统文件夹

再论全局变量:

  • 一般全局变量

    • 源文件中定义的全局变量能够在其余任意源文件中进行应用
    • 可应用 extern 关键字在头文件中申明,并在其余文件中应用(如果不申明,则在其余源文件中不可见)
  • 动态全局变量

    • static润饰的全局变量 只能在以后源文件中应用
    • 无奈通过 extern 关键字申明,也就没有方法在其余文件中应用

本文总结自“狄泰软件学院”唐佐林老师《C 语言入门课程》。
如有错漏之处,恳请斧正。

退出移动版