人人都能学会的编程入门课
胡光
原百度高级算法研发工程师
19410 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
开篇词 (1讲)
人人都能学会的编程入门课
15
15
1.0x
00:00/00:00
登录|注册

10 | 预处理命令(上):必须掌握的“黑魔法”,让编译器帮你写代码

你好,我是胡光,欢迎回来。今天是大年初四,春节的气氛依然很浓厚,春节玩得开心吗?但也别忘了咱们的继续学习哦。今天还在看专栏,依旧没有忘记学习的你,我必须赞叹一声:学会编程,非你莫“鼠”!
之前我们学习的编程知识,都是作用在程序运行阶段,也就是说,当我们写完了一段代码以后,只有编译成可执行程序,我们才能在这个可执行程序运行后,看到当初我们所写代码的运行效果。而你有没有想过,存在一些编程技巧,是作用在非运行阶段的呢?这就是我们今天要学习的内容。
今天呢,我们将来讲解整个语言基础篇的最后一部分:预处理命令。那么什么是预处理命令呢?它又为什么被称为程序设计中的“黑魔法”呢?让我们开始今天的学习吧。

任务介绍

这次这个任务呢,我们将分成两节来讲解,这是因为,想要掌握程序设计中的这门“黑魔法”,真的急不来,咱得慢慢来。
本次这个任务呢,和输出有关系:请你实现一个打印“漂亮日志格式”的方法。你可能想用 printf 直接打印,别着急,听我详细说完这个打印日志的功能介绍以后,你可能就知道什么叫做“魔法般的方法”了。
首先我们先说“日志”的作用,程序中的“日志”,通常是指在程序运行过程中,输出的一些与程序当前状态或者数据相关的一些信息。这些信息,可以帮助程序开发人员做调试,帮助运营人员做数据分析,帮助管理人员分析日活等等。总而言之,一份合理的日志信息,是非常有价值的数据。而我们今天呢,接触一种最简单的日志形式,就是程序运行过程中的调试信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了C语言编程中的预处理命令,以及预处理阶段对源代码的处理过程。通过讲解预处理命令的作用和重要性,以及C语言程序从源代码到可执行程序的编译过程中的三个阶段,读者可以更清楚地理解这些概念。文章通过具体的代码示例和实验,帮助读者理解了预处理命令的具体应用和影响,以及待编译源码对程序最终功能的决定作用。此外,文章还提出了关于对象文件的学习任务,鼓励读者进一步深入学习。总的来说,本文通过实例和解释,帮助读者了解了预处理命令的基本知识和重要性,为进一步学习和应用预处理命令打下了基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《人人都能学会的编程入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • 🤪HappyJoo
    对象文件是经过编译,还未链接的文件,基本上是机器语言。它的作用有两个,一个是经过编译后,它才能被机器读懂,另一个是等待链接的中转,它里面有一些指示告诉链接器如何链接。

    作者回复: perfect!

    2020-02-13
    10
  • 有没有什么办法可以看到 预处理阶段后的 待编译源代码的内容?

    作者回复: 可以的,如果使用Linux环境的话,编译的时候,gcc -E 源文件,用这个命令就可以看到预处理以后的代码。

    2020-01-29
    9
  • rocedu
    分为 预处理,编译,汇编,链接 四个阶段更完整, 每个阶段对应的gcc 相关参数: gcc -E gcc -S gcc -c gcc -o

    作者回复: 恩,对的,初学的话,着重搞懂三个阶段即可,一般来说是四个阶段,其实还有一个【编译优化阶段】。

    2020-02-12
    4
  • 罗耀龙@坐忘
    茶艺师学编程 相信爱好军事的同学都知道,已经交付的中国航母002——山东舰,其建造方法就是先进的模块化建造。 而各位大神更清楚,c语言的对象文件,就是这样的“模块”,通过“拼接”,最终形成可执行文件exe。

    作者回复: 这样理解貌似更酷炫一些!

    2020-05-23
    2
  • 就叫Hugo也行
    “对象文件”,我记得应该是叫“目标文件”。“对象文件”这个翻译与“面向对象”会混淆。所以,建议翻译成“目标文件”。

    作者回复: d(^_^o)嗯,你的建议是正确的

    2020-02-25
    2
  • 1043
    预处理命令就是“董事会最终决议的命令”然后由编译器这个“CEO”去执行,中间可能改变一些原命令但是会向着命令的目标去执行靠近。而CEO这个具体如何“执行命令的策略”是由“链接程序”定的基本具有的资源,就是不会在没有的资源文件里去搜索资源。(只是不知道按名字理解这个链接是这个意思不?)

    作者回复: 嗯,对的!是这个意思。太强了!d(^_^o)

    2020-04-07
    1
  • 🤪HappyJoo
    同学们,log函数是老师给我们的作业,c语言里面是没有这个打印日志的方法的(笑哭),我还搜索了十几分钟哈哈哈哈

    作者回复: 原谅我---->(狂笑不止)

    2020-02-12
    1
  • Tokamak
    宏定义这节加深了之前对宏的理解,谢谢老师

    作者回复: d(^_^o)

    2020-03-16
  • Jinlee
    对对象文件的理解:待编译源码是高级语言,经过编译器编译之后就变成了等效的的汇编代码,也就是机器可以执行的机器指令。

    作者回复: 如果要是能从『定义』和『声明』的角度来解释的话,就完美了。

    2020-01-30
  • 像文章所说 预处理命令 #include 会把 include 的内容拷贝到#include 处,如果所有文件都这样处理,那么每个文件就会出现好多重复的代码,想知道C语言预处理阶段是怎么处理这样的问题的?

    作者回复: 往后看,看后面的条件编译。^_^

    2020-01-29
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部