10 | 预处理命令(上):必须掌握的“黑魔法”,让编译器帮你写代码
胡光
你好,我是胡光,欢迎回来。今天是大年初四,春节的气氛依然很浓厚,春节玩得开心吗?但也别忘了咱们的继续学习哦。今天还在看专栏,依旧没有忘记学习的你,我必须赞叹一声:学会编程,非你莫“鼠”!
之前我们学习的编程知识,都是作用在程序运行阶段,也就是说,当我们写完了一段代码以后,只有编译成可执行程序,我们才能在这个可执行程序运行后,看到当初我们所写代码的运行效果。而你有没有想过,存在一些编程技巧,是作用在非运行阶段的呢?这就是我们今天要学习的内容。
今天呢,我们将来讲解整个语言基础篇的最后一部分:预处理命令。那么什么是预处理命令呢?它又为什么被称为程序设计中的“黑魔法”呢?让我们开始今天的学习吧。
任务介绍
这次这个任务呢,我们将分成两节来讲解,这是因为,想要掌握程序设计中的这门“黑魔法”,真的急不来,咱得慢慢来。
本次这个任务呢,和输出有关系:请你实现一个打印“漂亮日志格式”的方法。你可能想用 printf 直接打印,别着急,听我详细说完这个打印日志的功能介绍以后,你可能就知道什么叫做“魔法般的方法”了。
首先我们先说“日志”的作用,程序中的“日志”,通常是指在程序运行过程中,输出的一些与程序当前状态或者数据相关的一些信息。这些信息,可以帮助程序开发人员做调试,帮助运营人员做数据分析,帮助管理人员分析日活等等。总而言之,一份合理的日志信息,是非常有价值的数据。而我们今天呢,接触一种最简单的日志形式,就是程序运行过程中的调试信息。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了C语言编程中的预处理命令,以及预处理阶段对源代码的处理过程。通过讲解预处理命令的作用和重要性,以及C语言程序从源代码到可执行程序的编译过程中的三个阶段,读者可以更清楚地理解这些概念。文章通过具体的代码示例和实验,帮助读者理解了预处理命令的具体应用和影响,以及待编译源码对程序最终功能的决定作用。此外,文章还提出了关于对象文件的学习任务,鼓励读者进一步深入学习。总的来说,本文通过实例和解释,帮助读者了解了预处理命令的基本知识和重要性,为进一步学习和应用预处理命令打下了基础。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《人人都能学会的编程入门课》,新⼈⾸单¥59
《人人都能学会的编程入门课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(13)
- 最新
- 精选
- 🤪HappyJoo对象文件是经过编译,还未链接的文件,基本上是机器语言。它的作用有两个,一个是经过编译后,它才能被机器读懂,另一个是等待链接的中转,它里面有一些指示告诉链接器如何链接。
作者回复: perfect!
2020-02-1310 - 奕有没有什么办法可以看到 预处理阶段后的 待编译源代码的内容?
作者回复: 可以的,如果使用Linux环境的话,编译的时候,gcc -E 源文件,用这个命令就可以看到预处理以后的代码。
2020-01-299 - rocedu分为 预处理,编译,汇编,链接 四个阶段更完整, 每个阶段对应的gcc 相关参数: gcc -E gcc -S gcc -c gcc -o
作者回复: 恩,对的,初学的话,着重搞懂三个阶段即可,一般来说是四个阶段,其实还有一个【编译优化阶段】。
2020-02-124 - 罗耀龙@坐忘茶艺师学编程 相信爱好军事的同学都知道,已经交付的中国航母002——山东舰,其建造方法就是先进的模块化建造。 而各位大神更清楚,c语言的对象文件,就是这样的“模块”,通过“拼接”,最终形成可执行文件exe。
作者回复: 这样理解貌似更酷炫一些!
2020-05-232 - 就叫Hugo也行“对象文件”,我记得应该是叫“目标文件”。“对象文件”这个翻译与“面向对象”会混淆。所以,建议翻译成“目标文件”。
作者回复: d(^_^o)嗯,你的建议是正确的
2020-02-252 - 1043预处理命令就是“董事会最终决议的命令”然后由编译器这个“CEO”去执行,中间可能改变一些原命令但是会向着命令的目标去执行靠近。而CEO这个具体如何“执行命令的策略”是由“链接程序”定的基本具有的资源,就是不会在没有的资源文件里去搜索资源。(只是不知道按名字理解这个链接是这个意思不?)
作者回复: 嗯,对的!是这个意思。太强了!d(^_^o)
2020-04-071 - 🤪HappyJoo同学们,log函数是老师给我们的作业,c语言里面是没有这个打印日志的方法的(笑哭),我还搜索了十几分钟哈哈哈哈
作者回复: 原谅我---->(狂笑不止)
2020-02-121 - Tokamak宏定义这节加深了之前对宏的理解,谢谢老师
作者回复: d(^_^o)
2020-03-16 - Jinlee对对象文件的理解:待编译源码是高级语言,经过编译器编译之后就变成了等效的的汇编代码,也就是机器可以执行的机器指令。
作者回复: 如果要是能从『定义』和『声明』的角度来解释的话,就完美了。
2020-01-30 - 奕像文章所说 预处理命令 #include 会把 include 的内容拷贝到#include 处,如果所有文件都这样处理,那么每个文件就会出现好多重复的代码,想知道C语言预处理阶段是怎么处理这样的问题的?
作者回复: 往后看,看后面的条件编译。^_^
2020-01-29
收起评论