标准头文件写法
先了解一下什么是条件编译

//条件编译结构
#if 0或1
//代码块
#endif

那如何使用呢?

#if 1          //值为1则编译框中代码
int main(int argc, const char *argv[])
{return 0;
}
#endif
#if 0          //值为0则不编译
int main(int argc, const char *argv[])
{return 0;
}
#endif

好了,了解了这个之后,看一下写好的头文件

#ifndef _FUN_H
#define _FUN_Hint fun(int a);#endif

让我们来阅读一下这个头文件

#ifndef _FUN_H

这一句可以理解为 if no define 类似于以上条件编译的效果 ,加了一个if的判断

#define _FUN_H

这一句就是简单的宏定义,定义了一个 _FUN_H

简单来说
这两句的效果就是在进入fun.h文件后
如果未定义_FUN_H,就进入文件定义_FUN_H
如果定义了_FUN_C,就直接跳出

执行过程如下:
在同时执行多个文件时
第一个文件执行到#include"fun.h"时,进入fun.h文件,
没有检测到定义了_FUN_N,便进入文件开始运行
第二个文件执行到#include"fun.h"时,进入fun.h文件,
检测到定义了_FUN_N,便直接跳出
第三个文件执行到#include"fun.h"时,进入fun.h文件,
检测到定义了_FUN_N,便直接跳出

如此循环到所有文件运行结束

这样可以避免多个文件每一次运行到
#include"fun.h"
时就对fun.h文件进行一次全部编译,可以节省大量编译时间

头文件的格式如下

#ifndef _FUN_H
#define _FUN_H
//宏定义
define N 10
define M 20
..........//函数声明
int a();
void b();
........#endif

拿以下文件举例

文件名4.c,功能是将255的二进制数中第二位到第七位全部置为0

文件名5.c,功能是将1234的千位、百位、十位分别取出并打印
文件名fun.c,头文件,用来声明4.c中的int fun()函数

如下为打印结果:

首先使用 ls 命令查看目录下所有文件
gcc编译文件夹下所有文件
执行编译出的二进制文件
最后再次 ls 查看所有文件

可以看到,在编译之后除了生成的二进制执行文件 ./a.out
还多了一个 fun.h.gch
这个应该就是在执行fun.h文件之后生成的

我们将生成的 a.outfun.h.gch 文件删除
只对4.c和5.c文件编译
可以看到依然会生成 a.out 文件,
但是没有 fun.h.gch 文件了
也就验证了以上猜想

本文使用的代码如下

4.c

#include<stdio.h>
#include"fun.h"
int fun(int argc)
{int a = 255;int i,b;printf("before a=%d\n",a);for(i=2;i<=7;i++){a = a &(~ (1<<i));}return 0;
}

5.c

#include<stdio.h>
#include"fun.h"int main(int argc, const char *argv[])
{int a = 1234;int b = a /1000;int c = a %1000 /100;int d = a %100 /10;printf("十位是%d\n百位是%d\n千位是%d\n",d,c,b);fun(a);return 0;
}

fun.h

#ifndef _FUN_H
#define _FUN_Hint fun(int a);#endif

最后,感谢对本文的阅读,今后也会分享更多编程遇到的问题和学到的知识

努力,加油!

C语言中头文件的使用相关推荐

  1. C语言中头文件和源文件的注意事项

    C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...

  2. C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)

    c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码.有利于整理思路.使代码脉络更加 ...

  3. C语言中头文件包含的处理原则

    很多事不深入以为自己懂了,但真正用到项目上,才发现了问题.曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的.(毕竟刚毕业时老大对我最初的训练就是 ...

  4. 详解C语言中头文件的作用

    大家好,先做个自我介绍,我是天蓬,欢迎阅读本篇博文. 由于本人理解能力不是很好,阅读他人文章时,常常看得晕头晕脑,这让我很是头疼,我想,世界上一定还有和我一样的人(哈哈,不是说你么笨哦).所以,我将会 ...

  5. C语言中头文件和源文件的关系

    答案 #include预处理实际上就是完成了一个"复制代码并插入"的工作! 编译器工作阶段 1.预处理 2.词法和语法分析 3.编译(高级语言--汇编语言--二进制码--目标文件. ...

  6. c语言中ndigit用法,求C语言中头文件及函数的含意的总分类

    ALLOC.H 说明内存管理函数(分配.释放等). ASSERT.H 定义 assert调试宏. BIOS.H 说明调用IBM-PC ROM BIOS子程序的各个函数. CONIO. H 说明调用DO ...

  7. c语言中错误为ffblk未定义,C语言中头文件及函数的含意的总分类

    ALLOC.H 说明内存管理函数(分配.释放等). ASSERT.H 定义assert调试宏. BIOS.H 说明调用IBM-PC ROM BIOS子程序的各个函数. CONIO.H 说明调用DOS控 ...

  8. 在c语言中怎么返回引用参数,C语言函数 函数的声明 C语言的头文件 #include的用法 形参和实参 函数的返回值 - 猫扑天空...

    C语言函数 一.是什么? 是指编程中对一块功能代码的封装,可以理解一个程序片段 二.有什么用? 可以封装代码,方便调用,提高复用性 三.怎么用? 定义:  返回值类型  函数名(形参类型 参数名1-. ...

  9. c语言头文件可以定义全局变量,C语言在头文件中定义全局变量

    C语言在头文件中定义全局变量 头文件定义全局变量等问题 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量.头文件中不可以直接定 ...

最新文章

  1. 科普丨深度学习硬件(GPU、FPGA、ASIC、DSP)
  2. mysql8.11安装_MySQL-mysql 8.0.11安装教程
  3. EMD算法之Hilbert-Huang Transform原理详解和案例分析
  4. 升级bigsur_升级 macOS Big Sur 后,程序监听端口报错
  5. USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】
  6. Web Broadcast Channel
  7. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(8) - 杂项指令 用户态扩展状态指令 随机数生成指令
  8. Oracle存储过程介绍
  9. 11 JVM 垃圾回收(上)
  10. C# 值类型和引用类型 以及作为方法参数的区别
  11. 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)...
  12. Smarty下载和安装
  13. 【语音识别】日语语音识别系统Julius(v4.4)的基于DNN的识别(5月8号:识别结果更新)
  14. 《刻意练习》读书分享
  15. Dede文章标题及文章摘要长度修改_元曦血狼_新浪博客
  16. 推荐书单——不定时更新
  17. 安卓上通过pydorid 3来使用jupyter notebook(鸿蒙/华为/安卓手机/平板进行python编程学习)
  18. 如何设置Foxmail收取yahoo.com.cn和yahoo.cn以及yahoo.com等邮箱的方法
  19. requireJS常用用法
  20. lv双肩包尺寸对照表_lv双肩包mini尺寸对照表

热门文章

  1. 新能源汽车赛道王者争霸战,盛世昊通携国澳新能源入局充电桩事业
  2. 芭比linux安装硬盘,可爱的小芭比……Debian下为移动硬盘装上puppy(使用GRUB引导)...
  3. Armbian 笔记六_使用 armbian-ddbr 命令 备份/还原 eMMC 系统
  4. 阿里mysql连接_[转]解决阿里云mysql不能连接,配置mysql远程连接
  5. intel E810 100G网卡iperf测试
  6. 2019苏州计算机一级考试时间,2019年上半年江苏省苏州市计算机等级考试简章
  7. 美国次级房贷风波蔓延 全球爆发小型金融危机
  8. 各种正则校验规则:校验用户名正则,校验手机号,校验中文姓名,校验英文姓名,校验数字,校验银行卡,校验身份证号码,校验时间格式,校验 email(邮箱)
  9. 共享的计算机用户账户限制,win7不能访问共享文件夹用户账户限制如何解决
  10. 优秀的windows软件推荐(内存整理和文件解除占用)