程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号等的介绍

文章目录

  • 前言
  • 一、程序的翻译环境和执行环境
  • 二、编译链接过程
  • 三、编译的几个阶段
  • 四、运行环境
  • 五、预定义符号
  • 总结


前言

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。


一、程序的翻译环境和执行环境

在 ANSI C 的任何一种实现中,存在两个不同的环境。

  1. 第 1 种 是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
  2. 第 2 种 是执行环境, 它用于实际执行代码。

二、编译链接过程

  • 每一个源文件(test.c),编译器都会单独处理,生成一个目标文件(test.obj)
  • 不同编译器文件后缀不同,Linux环境 gcc 编译器生成目标文件 是 test.o文件

在这里插入图片描述

三、编译的几个阶段

  • 编译可以分为三个阶段
  • 预编译
  • 编译
  • 汇编

编译阶段的符号汇总是汇总全局变量和函数。
在这里插入图片描述

四、运行环境

程序执行的过程:

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

五、预定义符号

  • 这些预定义符号都是语言内置
  • 这些预定义符号可以用来写日志
    在这里插入图片描述
#include <stdio.h>
int main()
{FILE* pf = fopen("log.txt", "w");if (NULL == pf){perror("fopen");}int i = 0;for (i = 0; i < 10; i++){fprintf(pf, "file:%s  line=%d  date:%s  time:%s\n", __FILE__, __LINE__, __DATE__, __TIME__);}fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述


总结

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690178.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter-加载中动画

效果 考察内容 AnimationControllerTweenAnimatedBuilderTransformMatrix4 实现 ///源码&#xff1a;https://github.com/yixiaolunhui/flutter_xy class LoadingView extends StatefulWidget {const LoadingView({Key? key}) : super(key: key);overrideState<LoadingV…

新都区新都街道沱江社区:共建“微花园”,愿景变实景!

“你看嘛&#xff0c;本来是一个很好的锻炼身体的地方&#xff0c;现在看起来乱糟糟的&#xff0c;大家都很少去运动。”这是一位来自沱江社区自建区居民的心声。 灰扑扑的运动角 杂草丛生闲置空地 …… 本应该是提升居民幸福感的“小角落” 却变成了遭人冷落的“灰色空间…

maven找不到依赖,in offline mode

问题描述&#xff1a; [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

mac第三方软件怎么删除 MacBook卸载第三方应用程序 mac第三方恶意软件删除不了怎么办呢

Mac是一款优秀的个人电脑&#xff0c;它拥有流畅的操作系统、强大的性能和丰富的应用程序。但是&#xff0c;随着使用时间的增加&#xff0c;你可能会发现你的Mac上安装了一些不需要或者不喜欢的第三方软件&#xff0c;这些软件可能会占用你的空间、影响你的速度或者带来安全风…

图片识别公式神器推荐_mathpix

你是否遇到在某个资料上看到一个很复杂的公式&#xff0c;但有懒得再 word 或者其他文件上打出来。 比如这个&#xff1a; 如果直接截图的话&#xff0c;只能说非常丑陋。 推荐一个网站 mathpix&#xff0c;点击 try for free&#xff0c;注册登录。 Mathpix: AI-powered doc…

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类&#xff08;NBC&#xff09;是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法&#xff0c;先通过已给定的训练集&#xff0c;以特征词之间独立作为前提假设&#xff0c;学习从输入到输出的联合概率分布&#xff0c;再基于学习…

ApiHug Official Website

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | MarketplaceApiHug-H…

三轴 MEMS 加速度传感器

功能概述 本模块为了对电机、风机、水泵等旋转设备进行预测性运维而开发&#xff0c;只需一 个模块&#xff0c;就可以采集电机的 3 路振动信号&#xff08;XYZ 轴&#xff09;和一路温度信号&#xff0c;防护等 级 IP67 &#xff0c;能够适应恶劣的工业环境。 传感器自动计算…

python实现九宫格图片切割

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.分析 一.前言 朋友圈九宫格是一种在社交媒体上展示图片或内容的常见布局方式,特别是在微信朋友圈中非常流行。这种布局由九个相同大小的格子组成,通常用于展示一组相关的图片或内容。&…

PMP证书如何备考?

每个过了PMP考试的考生&#xff1a;“你是如何学习和准备的”&#xff1f;答案基本分三类&#xff1a; 第一种是“临时抱佛脚”式&#xff1b;第二种是“持续抗战式”&#xff1b;第三种是“疲劳作战式”。 第一种比较符合人性和期望—20世纪三大管理定义之一的帕金斯定律&am…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;四&#xff09; 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第三部分&#xff1a;工具使用 工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超…

知行之桥EDI系统跨平台版本安装报错及解决方案

本文将为大家介绍如何在Windows系统中安装知行之桥EDI系统跨平台版本的常见报错以及解决方案。如下图所示&#xff1a; 在知行软件官网的导航栏中点击 下载 按钮&#xff0c;即可看到知行之桥EDI系统不同版本的下载选项&#xff0c;点击右侧跨平台版本&#xff0c;选择 Windows…