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


前言

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


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

在 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;
}

在这里插入图片描述


总结

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 23:18:11       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 23:18:11       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 23:18:11       87 阅读
  4. Python语言-面向对象

    2024-05-11 23:18:11       96 阅读

热门阅读

  1. QT_BEGIN_NAMESPACE

    2024-05-11 23:18:11       33 阅读
  2. TypeScript的`undefined`作用与使用:初学者指南

    2024-05-11 23:18:11       37 阅读
  3. Redhat Linux忘记密码解决方案

    2024-05-11 23:18:11       34 阅读
  4. 第 8 章 机器人底盘Arduino端入口(自学二刷笔记)

    2024-05-11 23:18:11       28 阅读
  5. 研究生写论文常用工具以及如何快速阅读外文

    2024-05-11 23:18:11       33 阅读
  6. 接口测试的流程

    2024-05-11 23:18:11       29 阅读