【C语言】预处理指令:#include #ifndef #define #endif

目录

一、头文件的引用 #include

1. 标准库的头文件

#include

2. 非标准库的头文件 

#include "filename.h"

3. 嵌套文件包含

引用头文件时可能会出现嵌套文件包含的场景:

二、条件编译 #ifndef #define #endif

 条件编译:根据条件判断是否编译语句。

1. 主要用来避免头文件的重复引入

2.其他条件编译指令

1.

2.多分支

3.判断是否定义

4.嵌套条件指令


一、头文件的引用 #include

1. 标准库的头文件

#include <filename.h>

此格式用来引用标准库的头文件,编译器将从标准库目录开始搜索

2. 非标准库的头文件 

#include "filename.h"

此格式用来引用非标准库的头文件,编译器将从用户的工作目录开始搜索。

如果该头文件未找到,编译器就像查找库函数头文件一样在标准库目录搜索头文件。

(所以说对于库文件也可以使用" "引用,但这样搜索范围大,效率较低)

3. 嵌套文件包含

引用头文件时可能会出现嵌套文件包含的场景:

 test.c 文件中引用了两次 comm.h,导致了头文件内容被重复引用。重复包含会增大程序大小,重复编译增加编译时间。

这时需要用条件编译解决此问题。

二、条件编译 #ifndef #define #endif

 条件编译:根据条件判断是否编译语句。

1. 主要用来避免头文件的重复引入

//每个头文件开头这样写,即可避免重复引用
#ifndef __TEST_H__
#define __TEST_H__
...//头文件内容
#endif

#ifndef :如果未定义 __TEST_H__(与头文件名 test.h 对应),编译后续语句,否则放弃编译。

#define:进入编译,定义 __TEST_H__,若存在第二次引用该头文件,__TEST_H__ 已定义,则放弃此次编译。

#endif:和 #ifndef 配合使用,如果丢失#endif,可能会报错。

如此就避免了头文件的重复引用。

2.其他条件编译指令

1.


#if 常量表达式
...
#endif

2.多分支

#if 常量表达式
...
#elif 常量表达式
...
#else 常量表达式
...
#endif

3.判断是否定义

#if defined(symbol)
...
#endif

#ifdef symbol
...
#endif

#if !defined(symbol)
...
#endif

#ifndef symbol
...
#endif

4.嵌套条件指令

#if defined(OS_UNIX)
	#ifdef OPTION1
		unix_version_option1();
	#endif
	#ifdef OPTION2
		unix_version_option2();
	#endif
#elif defined(OS_MSDOS)
	#ifdef OPTION2
		msdos_version_option2();
	#endif
#endif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值