C语言 ——— 条件编译指令实际用途

目录

前言

头文件被包含的方式

嵌套文件包含

使用条件编译指令规避头文件多次包含

 还有一个编译指令,同样能做到以上功能


 

前言

条件编译指令多用于对头文件的定义和判断以及删除


头文件被包含的方式

本地文件包含(也就是自己创建的头文件):

#include "stdio.h"

本地文件包含的查找策略:
会现在源文件所在的目录下查找,如果该头文件没有查找到,编译器就会像查找库函数的头文件一样在标准位置查找该头文件,如果再找不到就会提示编译错误

库文件包含:

#include<stdio.h>

库文件包含的查找策略:

查找库里面的头文件时,编译器会直接去标准路径下查找,如果找不到就会提示编译错误

结论:

库里面的头文件也可以使用 "" 的形式包含,但这样的话查找头文件的效率就低了,且这样也不容易区分是库文件还是本地文件了,所以本地文件使用 "" 的形式包含,库文件使用 <> 的形式包含


嵌套文件包含

在一个工程项目里面,可能 .h 文件包含了其他 .h 文件,也有可能互相包含,这样的结果就会导致同一份 .h 文件出现多次,这样就造成了文件内容的重复

解决以上文件就需要使用到条件编译指令,来判断和删除头文件


使用条件编译指令规避头文件多次包含

代码演示:

#ifndef __TEST_H_
#define __TEST_H_

int Add(int x, int y);

#endif

以上代码的头文件为:#include "test.h"

代码解析:
#ifndef 编译指令的功能是:当后面的表达式为假的时候(也就是没有定义时)就执行中间的代码,否则就不执行,且头文件为 test.h ,那么要使用 #ifndef 来判断的话,最好是将 test.h 写成 __TEST_H_ 的形式,便于理解

当其他头文件包含此 test.h 头文件时,也就是当程序第一次进入此头文件的时候,程序肯定没有包含过此头文件,所以 #ifndef 判断就会为假,#ifndef 中的代码就会执行,且 #define 就会定 义 __TEST_H_ 这个头文件

所以当第二次以后其他头文件包含此文件时,#ifndef 判断就会为真,#ifndef 中的代码就不会再执行

这样就规避了同一份 .h 文件出现多次,且文件内容重复的情况


 还有一个编译指令,同样能做到以上功能

代码演示:

#pragma once

只要将这条指令放在头文件的最开始位置,也同样能实现以上功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值