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

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

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

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

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

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

一开始:

效果:

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

把语句拷贝到ok.h中:

主文件中:

效果一样:

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

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

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

4:最后,继续探究!

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

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

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

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

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

时间: 2024-08-18 02:55:50

深入理解C语言的预编译指令之 include的相关文章

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

怂b促64u父猩84卵ml0http://www.facebolw.com/space/2101977 0俜垂屹17该性胶1http://tushu.docin.com/hmd622 6PDYRS4B疽指http://jz.docin.com/qhrdw7660 myzTBR7烤OEhttp://weibo.com/u/6341913394 059R暮7855AQGW压http://www.facebolw.com/space/2104062/follower Z奈m寂雀瞪7KAQ兹呢http:

iOS中的预编译指令的初步探究

看到非常好的两篇技术文,转来方便自己查看. 转自:http://www.cnblogs.com/daiweilai/p/4234336.html 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了

iOS中的预编译指令

iOS中的预编译指令的初步探究 目录[+] 开篇 我们人类创造东西的时候有个词叫做”仿生学“!人类创造什么东西都会模仿自己来创造,所以上帝没有长成树的样子而和人长得一样,科幻片里面外星人也像人一样有眼睛有鼻子……但是人类自己创造的东西如果太像自己,自己又会吓尿(恐怖谷效应),人类真是奇葩:奇葩的我们在20世纪创造了改变世界的东西——计算机(电脑),不用怀疑,这货当然也是仿生学!这货哪里长得像人了??别不服,先听我说完,先把你的砖头放下.狭义的仿生学是外形上仿生嘛,其实广义上仿生学还可以原理的仿生

c语言中条件编译相关的预编译指令

一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编译 条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段.可根据表达式的值或某个特定宏是否被定义来确定编译条件. 最常见的条件编译是防止重复包含头文件的宏,形式跟下面代码类似: 1 #ifndef ABCD_H 2 #define ABCD_H 3 4 // ... some declarat

C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对程序中的变量.函数等. 预编译指令的基本知识不作详细介绍,只稍作汇总,重点是后面的我能想到的 使用时的注意事项. 1. 基本内容 预编译指令基本分类如下 类别 指令 预定义符号__FILE__.__LINE__.__DATE__.__TIME__.__STDC__宏#define文件包含#inclu

C/C++中的预编译指令

工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4267) 不理解意思,遂查? C/C++中的预编译指令 程序的编译过程可以分为预处理.编译.汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器.预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件.定义宏.根据条

在EJS脚本内使用“#include”预编译指令

此博客为9925.org的镜像,登录9925.org可以查看到最新博文. 原文出处:http://ily.so/26bMBz 预编译指令是Easton JavaScript脚本解释器对JavaScript语言拓展的重要功能之一,使用预编译指令可以引用外部的JS脚本代码,类似于HTML内的<script>标签引用外部JS脚本. #include语法解释 以“#include”指令开始,一行一个指令,指令后面加不加空格都无所谓,但是为了方便阅读通常情况下都加一个空格. 例如: //引用运行库内的A

c/c++中的预编译指令总结

预处理指令提供按条件跳过源文件中的节.报告错误和警告条件,以及描绘源代码的不同区域的能力.使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致.在 C# 中没有单独的预处理步骤:预处理指令按词法分析阶段的一部分处理. 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译.布局控制和宏替换4种. 文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文. 条件编译:#if,#ifndef,#ifdef,

[转]Delphi预编译指令总结

Delphi预编译指令总结 Delphi作为一个优秀的开发工具,这不仅是由于它开创了"构件 (Component)"时代,影响深远:另一个原因是它拥有非常出色的编译器,Borland(Inprise)公司宣称Delphi具有世界上最快的 编译器,如果你使用过Visual C++和Delphi你会明显体会到这一点.Delphi快速高效的编译器主要来自Object Pascal的严谨,使用Delphi随时都在和编译器交流,大部份情况下不需要我们干涉编译器的运行,但是有时也需要对编译器进行必