首页 > 其他分享 >C语言语法最后一个教案-教案21(预处理 · 头文件)

C语言语法最后一个教案-教案21(预处理 · 头文件)

时间:2024-04-09 14:59:00浏览次数:25  
标签:教案 头文件 21 ... 源码 文件 include 定义

最近给大家争取到一个 深夜福利

保证你在深夜手机刷到 嘎嘎香~

那就是  官方授权 大流量卡

缺点:月租太便宜 

185GB~

100分钟通话时长~

长期套餐~

畅想自由的气息

流量自由的同时还拥有超长通话,而且免费领取。

名额有限,咱们废话不多说直接上图。

感兴趣的家人私我或者直接加微信:lyg15314144781

流量卡

头文件的作用

通常,一个常规的C语言程序会包含多个源码文件(*.c),当某些公共资源需要在各个源码文件中使用时,为了避免多次编写相同的代码,一般的做法是将这些大家都需要用到的公共资源放入头文件(*.h)当中,然后在各个源码文件中直接包含即可。

头文件的内容

  • 头文件中所存放的内容,就是各个源码文件的彼此可见的公共资源,包括:
  1. 全局变量的声明。
  2. 普通函数的声明。
  3. 静态函数的定义。
  4. 宏定义。
  5. 结构体、联合体的定义。
  6. 枚举常量列表的定义。
  7. 其他头文件。
  • 示例代码:
// head.h
extern int global; // 1,全局变量的声明
extern void f1();  // 2,普通函数的声明
static void f2()   // 3,静态函数的定义
{
    ...
}
#define MAX(a, b) ((a)>(b)?(a):(b)) // 4,宏定义
struct node    // 5,结构体的定义
{
    ...
};
union attr    // 6,联合体的定义
{
    ...
};
#include <unistd.h> // 7,其他头文件
#include <string.h>
#include <stdint.h>
  • 特别说明:
  1. 全局变量、普通函数的定义一般出现在某个源码文件中,其他的源码文件想要使用都需要进行声明,因此一般放在头文件中更方便。
  1. 静态函数、宏定义、结构体、联合体的定义都只能在其所在的文件可见,因此如果多个源码文件都需要使用的话,放到头文件中定义是最方便,也是最安全的选择。

头文件的使用

头文件编写好了之后,就可以被各个所需要的源码文件包含了,包含头文件的语句就是如下预处理指令:

// main.c
#include "head.h"  // 包含自定义的头文件
#include <stdio.h> // 包含系统预定义的文件

int main()
{
    ...
}

可以看到,在源码文件中包含指定的头文件有两种不同的形式:

  • 使用双引号:在指定位置 + 系统标准路径搜索 head.h
  • 使用尖括号:在系统标准路径搜索 stdio.h

由于自定义的头文件一般放在源码文件的周围,因此需要在编译的时候通过特定的选项来指定位置,而系统头文件都统一放在标准路径下,一般无需指定位置。

假设在源码文件 main.c 中,包含了两个头文件:head.h 和 stdio.h ,由于他们一个是自定义头文件,一个是系统标准头文件,前者放在项目 pro/inc 路径下,后者存放于系统头文件标准路径下(一般位于 /usr/include),因此对于这个程序的编译指令应写作:

gec@ubuntu:~/pro$ gcc main.c -o main -I /home/gec/pro/inc

其中,/home/gec/pro/inc 是自定义头文件 head.h 所在的路径

  • 语法要点:
    • 预处理指令 #include 的本质是复制粘贴:将指定头文件的内容复制到源码文件中。
    • 系统标准头文件路径可以通过编译选项 -v 来获知,比如:
gec@ubuntu:~/pro$ gcc main.c -I /home/gec/pro/inc -v
... ...
#include "..." search starts here:
#include <...> search starts here:
    /usr/lib/gcc/x86_64-linux-gnu/7/include
    /usr/local/include
    /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
    /usr/include/x86_64-linux-gnu
    /usr/include
... ...

头文件的格式

由于头文件包含指令 #include 的本质是复制粘贴,并且一个头文件中可以嵌套包含其他头文件,因此很容易出现一种情况是:头文件被重复包含。

  • 使用条件编译,解决头文件重复包含的问题,格式如下:
#ifndef MACRO
#define MACRO

...
... (头文件正文)
...

#endif

其中,MACRO一般取头文件名称的大写。

到这里,C语言基础语法教案全部讲完啦,总共是21个教案,系列讲解C语言各个语法知识,还是比较全面详细的。如果全部看懂8成左右,就可以进行C语言开发了。不过编程的东西要多做项目练习,可以在我这个专栏内找到教案习题,里面有各种牛刀小试,可以试试自己的水平。如果看到最后的小伙伴不妨在评论区打个 在看,全系列看过8成的打个 看过。

最后感谢大家的观看和点赞,祝各位在编程路上一展宏图,加油。

标签:教案,头文件,21,...,源码,文件,include,定义
From: https://blog.csdn.net/LINUX823/article/details/137504058

相关文章