c语言文件包含的作用,第10天C语言(09):文件包含-注意点

一、概念

/*

#include ""

"" 先会在当前文件查找, 找不到再去编译器环境下查找,找不到再去系统的环境下查找

#include <>

<> 先去编译器环境下查找,找不到再去系统的环境下查找

作用:

将""或者<>中的内容完全拷贝过来

注意:

如何正确编写.h文件

添加头文件卫士 防止循环导入

#ifndef __ZS__H__ // 判断是否没有定义了名称叫做 __ZS__H__ 的宏

#define __ZS__H__ // 定义一个叫 __ZS__H__ 的宏

#endif

官方

#ifndef ls_h

#define ls_h

#endif

如果防止循环拷贝 (A 拷贝 B , B拷贝 A)

只允许一方拷贝 (另一方只做声明)

间接拷贝问题

A 拷贝 B, B拷贝C, C拷贝 D

*/

二、代码

#include

//#include "zs.h" // int sum(int v1, int v2);

#ifndef __ZS__H__ // 判断是否没有定义了名称叫做 __ZS__H__ 的宏

#define __ZS__H__ // 定义一个叫 __ZS__H__ 的宏

// 加法运算

// v1 ,v2 需要参与运算的数据

int sum(int v1, int v2);

#endif

// 函数可以重复声明, 但不能重复定义

//void text();

//void text();

//void text();

//#include "zs.h" // int sum(int v1, int v2);

#ifndef __ZS__H__ // 判断是否没有定义了名称叫做 __ZS__H__ 的宏

#define __ZS__H__ // 定义一个叫 __ZS__H__ 的宏

// 加法运算

// v1 ,v2 需要参与运算的数据

int sum(int v1, int v2);

#endif

// 重复导入会降低编译效率

#include "zs.h" // zs 导入了 ls的文件 这种就是间接拷贝

//#include "ls.h"

int main()

{

// printf("sum = %i\n",sum(10, 22));

printf("minus = %i\n",minus(30, 20));

return 0;

}

void text()

{

printf("000\n");

}

>>> zs.h

// 为了防止重复导入, 一般情况下会在.h中添加上 头文件卫士

//#ifndef __ZS__H__ // 判断是否没有定义了名称叫做 __ZS__H__ 的宏

//#define __ZS__H__ // 定义一个叫 __ZS__H__ 的宏

// 加法运算

// v1 ,v2 需要参与运算的数据

int sum(int v1, int v2);

#include "ls.h" // (拷贝ls.h)

/*

#include "ls.h" 相当于把ls.h的东西 都拷贝过来

int minus(int v1,int v2);

int sum(int v1, int v2); // 只做zh.h的声明

*/

//#endif

>>> zs.c

#include "zs.h"

int sum(int v1, int v2)

{

// 先用 v1 - v2 然后再加上 v1

int res = minus(v1, v2);

return res + v2;

}

>>> ls.h

//#ifndef ls_h

//#define ls_h

// 减法运算

// v1 ,v2 需要参与运算的数据

int minus(int v1,int v2);

//#include "zs.h" // (循环拷贝) #include nested too deeply

int sum(int v1, int v2); // 只做zh.h的声明

//#endif /* ls_h */

>>> ls.c

#include "ls.h"

int minus(int v1,int v2)

{

// 先将两个数相加, 然后再减去v2

int res = sum(v1, v2);

return res - v2;

}

循环引用

04add84b067b

image.png

04add84b067b

image.png

jie'j

解决循环

04add84b067b

image.png

04add84b067b

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值