编译链接
程序的编译分为4个阶段
- 预处理:展开头文件/宏替换/去掉注释/条件编译 (test.i main.i)
- 编译:检查语法,生成汇编语言 (test.s main.s)
- 汇编:将汇编语言转换成机器语言 (test.o main.o)
- 链接:链接到一起生成可执行文件 (a.out)
简单的一些预处理命令:
预处理命令 | 含义 |
---|---|
#define | 宏替换 |
#undef | 撤销定义过的宏名 |
#include | 让编译程序将另一源文件嵌入到含有#include的程序中 |
#if #endif | 如果#if后的常量表达式为true,则编译#if与#endif之间的代码,否则跳过这些代码。#endif标志着一个#if块的结束 |
#else | #else建立另一个选择,在#if失败后编译 |
#elif | 可以形成一个if else if 的阶梯状语句,进行多种编译选择 |
#line | 改变当前行数和文件名,它们是在编译程序中预先定义的标识符 |
#error | 编译程序中,只要遇到#error,就会生成一个编译错误提示信息,并停止编译 |
#pragma | 为实现时定义的命令,它允许想编译程序传递各种命令 |