文章目录
- 前言
- 一、程序的翻译环境和执行环境
- 二、编译链接过程
- 三、编译的几个阶段
- 四、运行环境
- 五、预定义符号
- 总结
前言
程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。
一、程序的翻译环境和执行环境
在 ANSI C 的任何一种实现中,存在两个不同的环境。
- 第 1 种 是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
- 第 2 种 是执行环境, 它用于实际执行代码。
二、编译链接过程
- 每一个源文件(test.c),编译器都会单独处理,生成一个目标文件(test.obj)
- 不同编译器文件后缀不同,Linux环境 gcc 编译器生成目标文件 是 test.o文件
三、编译的几个阶段
- 编译可以分为三个阶段
- 预编译
- 编译
- 汇编
编译阶段的符号汇总是汇总全局变量和函数。
四、运行环境
程序执行的过程:
- 程序必须载入内存中,在有操作系统的环境中:一般这个由操作系统完成,在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。
- 程序的执行开始,调用main函数
- 开始执行后,程序将使用一个运行时堆栈,存储函数的局部变量和返回地址,程序同时也可以使用静态内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。
- 终止程序,正常终止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;
}
总结
程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。