深入理解C语言的预编译指令之 include

简介:

写过C语言的朋友都熟悉#include,在打印“hello world”这样一条语句也用上这条指令。但是,说熟悉它,只是表面熟悉,更多感觉是既熟悉又抽象陌生,结果也就只是不知道为什么的背诵了。抽象、熟悉而陌生,使得#include成为“最熟悉的陌生人”。

试着从另外的角度来深入理解它。

1:首先,它是一条预编译指令

也就是在编译之前就做了的,那么做了什么呢?动态包含。

2:其次,来理解何为“动态包含”?

一开始:

深入理解C语言的预编译指令之 include

效果:

深入理解C语言的预编译指令之 include

现在,先创建一个头文件:

深入理解C语言的预编译指令之 include

把语句拷贝到ok.h中:

深入理解C语言的预编译指令之 include

主文件中:

深入理解C语言的预编译指令之 include

效果一样:

深入理解C语言的预编译指令之 include

可见:#include 文件名 ,这条语句的功能是:在调用的时候复制该.h中的内容、粘贴到调用的地方的效果。这就是动态包含。

3:再次,为什么要这么做?也就是“动态包含做成#include”的意义:

这样的好处可以简化后续的维护:以后如果要修改了,只要到这个.h中来修改,那么N多地方多跟着是最新的了。

4:最后,继续探究!

其实.h也不一定是必须的,你可以是任意的后缀。这样就更加的体会出,#include 文件名,这个预编译指令的重点是#include,是动态包含,而不是后缀是什么文件。

如:我把ok.h改为ok.ncc,同时为了区别,增加了几个字:

深入理解C语言的预编译指令之 include

在主文件中修改包含的文件:

深入理解C语言的预编译指令之 include

结果同样正确(打印了最新的内容)

深入理解C语言的预编译指令之 include

更多C语言详解,敬请关注下集分解...










本文转自 ningcaichen66 51CTO博客,原文链接:http://blog.51cto.com/ningcaichen66/1967701,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
编译器 C语言
C语言的预处理指令
C语言的预处理指令
|
2月前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
3月前
|
程序员 编译器 C语言
C语言中的预处理指令及其实际应用
C语言中的预处理指令及其实际应用
86 0
|
5月前
|
编译器 C语言
C语言中的#include指令
C语言中的#include指令
|
6月前
|
安全 编译器 程序员
C语言(16)----预处理中的宏以及预处理指令
C语言(16)----预处理中的宏以及预处理指令
56 2
|
6月前
|
程序员 编译器 C语言
【C 言专栏】C 语言中的预处理器指令
【5月更文挑战第6天】C 语言的预处理器指令在编译前起作用,提供代码灵活性。常见指令包括:`#define`(定义常量和宏)、`#include`(包含文件)、`#if` 等条件编译指令,以及`#pragma`(编译器特定指示)。合理使用能提升代码可读性和可维护性,但过度使用可能导致复杂性增加。注意其文本替换性质及顺序处理,避免头文件重复包含。预处理器在实际应用中用于实现不同功能和配置,是成为优秀 C 语言程序员的关键技能之一。
85 0
【C 言专栏】C 语言中的预处理器指令
|
编译器 C语言 C++
【C语言】一篇带你玩转 预处理指令(下)
【C语言】一篇带你玩转 预处理指令(下)
92 1
|
编译器 C语言 C++
【C语言】一篇带你玩转 预处理指令(上)
【C语言】一篇带你玩转 预处理指令(上)
79 0
|
6月前
|
算法 Java C语言
【新手解答6】深入探索 C 语言:算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于`namespace` + import vs include
【新手解答6】深入探索 C 语言:算法流程图(条件判断、循环)+ 字符常量 + switch的具体用法 + 关于`namespace` + import vs include
170 0
|
6月前
|
编译器 程序员 C语言
C语言进阶教程(include只能包含.h文件吗?)
C语言进阶教程(include只能包含.h文件吗?)
114 0