文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

程序环境和预处理

2023-09-22 18:37

关注

> 作者简介:დ旧言~,目前大一,现在学习Java,c,c++,Python等
> 座右铭:松树千年终是朽,槿花一日自为荣。
> 望小伙伴们点赞👍收藏✨加关注哟💕💕 

🌟前言 

      学到这里的小伙伴们,咱们C语言就要结束啦,不知道小伙伴们学得咋样,相信学的不错 

今天是C语言最后的一篇博客,《程序环境和预处理》。来波鸡汤:

这个世界不会因为你的疲惫,而停下它的脚步。今天你不用力走,明天就要用力跑。如果无法避免,那我们能做的,不过只是把自己变得更强大,强大到能够应对下一场挑战。

 🌙主体

咱们由二个方面来讲解程序环境和预处理。

 
1.程序的环境
2.预处理

 🌠程序的环境

       谈起程序的环境,就不得不说起程序的翻译环境,程序的执行环境。而我们知道C语言代码是文本信息,计算机是不能直接理解的,因此需要相应的环境来支持C语言代码,来看看这两种环境有什么区别:

💦第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 (C语言环境-->二进制的指令) 💦第2种是执行环境,它用于实际执行代码。 (执行二进制的代码)

💤翻译环境

💦 组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code 💦 每个目标文件由链接器(linker )捆绑在一起,形成一个单一而完整的可执行程序。 💦 链接器同时也会引入标准C 函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。
咱们看一段代码来看看编译阶段:
#include int main(){int i = 0;for (i = 0; i < 10; i++){printf("%d ", i);}return 0;}
💦 1. 预处理 选项 gcc - E test.c - o test.i 预处理完成之后就停下来,预处理之后产生的结果都放在 test.i 文件中。 💦 2. 编译 选项 gcc - S test.c 编译完成之后就停下来,结果保存在 test.s 中。 💦 3. 汇编 gcc - c test.c 汇编完成之后就停下来,结果保存在 test.o 中。

💤运行环境

程序执行的过程: 💦 1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。 💦 2. 程序的执行便开始。接着便调用 main 函数。
💦 3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈( stack ),存储函数的局部变量和返回地址。程序同时也可以使用静态(static )内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。 💦 4. 终止程序。正常终止 main 函数;也有可能是意外终止。

 🌠预处理

咱们预处理由三个方面来讲解

💦1.预处理符号

💦2.#define

💤预处理符号

__FILE__       // 进行编译的源文件 __LINE__     // 文件当前的行号 __DATE__     // 文件被编译的日期 __TIME__     // 文件被编译的时间 __STDC__     // 如果编译器遵循 ANSI C ,其值为 1 ,否则未定义
这些预定义符号都是语言内置的。 举个栗子: printf ( "file:%s line:%d\n" , __FILE__ , __LINE__ );

💤#define

其实#define我们早早接触啦,那它具体使用的语法为:#define name stuff

💦name是定义的名字

💦stuff需要定义的形式(int,char)

注意:#define name stuff后面不需要加;

#define替换规则 💦 1. 在调用宏时,首先对参数进行检查,看看是否包含任何由 #define 定义的符号。如果是,它们首先被替换。 💦 2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 💦 3. 最后,再次对结果文件进行扫描,看看它是否包含任何由 #define 定义的符号。如果是,就重复上述处理过程。 注意: 1. 宏参数和 #define 定义中可以出现其他 #define 定义的符号。但是对于宏,不能出现递归。 2. 当预处理器搜索 #define 定义的符号的时候,字符串常量的内容并不被搜索。

 🌟结束语

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小说手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

来源地址:https://blog.csdn.net/AAlykk/article/details/132701340

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯