C语言中头文件的使用

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

//条件编译结构
#if 01
//代码块
#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_H

int 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_H

int fun(int a);

#endif

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

努力,加油!

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有只小白叫岳飒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值