c语言头文件编写

使用头文件的作用:当前.c文件要使用其它.c文件已定义的全局函数/全局变量时,对使用的全局函数/全局变量进行声明。

  1. 文件包含:文件包含语句的功能是把指定的文件插入该语句行位置,从而把指定的文件和当前的源程序文件连成一个源文件。
    文件包含有两种方式:双括号包含尖括号包含。但是这两种方式是有区别的:
    a.使用尖括号表示在系统头文件目录中去寻找(比如#define ,在linux中会去/usr/include/目录中去寻找头文件,或者用户自己去指定路径,比如#define ,在64位linux系统中会去/usr/include/x86_64-linux-gnu/sys/目录中去寻找头文件);
    b.使用双括号则表示先在当前源文件目录中去寻找,若找不到才到系统头文件目录中去寻找。
    如果用户知道文件具体位置,可以指明好路径,这样可以减少预处理的时间。
    c.这里需要指明的是:文件包含实际就是将该文件名替换成文件里面的内容,比如:3.txt文件的内容是:hello world in 3.txt然后包含3.txt头文件#include "3.txt"
    预处理之后头文件替换成3.txt文件里面的内容:c语言头文件编写_第1张图片

  2. 条件编译: 条件编译是指预处理器根据条件编译指令,有条件地选择源程序代码中的一部分代码作为输出,送给编译器进行编译。主要是为了有选择性地执行相应操作,防止宏替换内容(如文件等)的重复包含。
    在这里主要使用
    #ifndef 标识符 程序段 #endif语句,它的功能是,如果标识符未被#define语句定义过,则编译程序段。目的是为了防止在一个源文件多次包含同一个头文件。

  3. 头文件head.h的写法有下面两种形式,一种是在函数前面加上extern类型,一种是不加extern。其实加不加extern都是可以的,看个人使用情况。现在的编译器已经很强大,能识别该函数已经在别的文件定义了。只是加上extern可以直观的说明该函数在别的文件已定义好了。

  4. 函数声明”,是为了把函数名返回值类型以及形参类型个数顺序通知编译系统,以便在调用该函数时,编译系统进行对照检查,包括函数名是否正确、传递参数的类型、个数是否与形参一致。如若出现不对应的情况,编译会有语法错误。

  5. 函数声明可以不写形参名,只写形参的类型。如果函数在调用前,没有对函数进行声明,而且在同一个源文件前面出现了该函数的定义,那么编译器就会记住该函数的参数数量和类型以及函数的返回值类型,即把该函数作为声明,并将函数返回值的类型默认为int型。

c语言头文件编写_第2张图片

你可能感兴趣的:(C语言,>C基础,c语言头文件编写)