前言:随着对程序开发的深入了解,越觉得对底层的了解及语言基础的重要性。大道至简,回过头重新学习一次c++,是另外一种风景。如有不到之处,欢迎斧正。
一、开发的5个阶段
程序开发通常需要经过5个阶段。分别是编辑、预处理、编译、链接、运行与调试。
如下,是相关书籍中对开发过程的介绍:


二、编辑阶段
编辑阶段也就是我们常说的开发阶段,编辑相关源代码,实现我们的相关功能需求。
三、预处理阶段
在编译器开始编译之前,预处理器会自动执行源程序中的预处理指令。这些预处理语句是规定在编译之前执行的语句,其处理包括将其他源程序文件包括到要编译的文件中及各种文字替换等。
如下是部分预处理指令:
#define 定义一个预处理宏
#undef 取消宏的定义
#if 编译预处理中的条件命令, 相当于C语法中的if语句
#ifdef 判断某个宏是否被定义, 若已定义, 执行随后的语句
#ifndef 与#ifdef相反, 判断某个宏是否未被定义
#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if
#else 与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当于C语法中的else
#endif #if, #ifdef, #ifndef这些条件命令的结束标志.
defined 与#if, #elif配合使用, 判断某个宏是否被定义
#include 在这里插入代码片包含文件命令
#line 标志该语句所在的行号
#pragma 说明编译器信息
#warning 显示编译警告信息
#error 显示编译错误信息
四、编译阶段
我们在更改代码后,经常说的一句话,“先编译,后运行”。
编译器负责将源代码转化为机器语言代码(目标代码)。编译过程分为词法分析、语法分析、代码生成3个步骤。
1、词法分析
分析源代码语句,从语句中识别出有意义的单词(词法记号),常见的有标识符、运算符、分隔符、关键字、各种文字等等。检查到错误,会将错误信息显示给用户。
2、语法分析
语法分析根据高级语言规则来识别程序中的逻辑结构,例如各种表达式、控制结构等。语法分析检查程序是否正确使用了语言的结构,检查相关错误并反馈给用户。
2、代码生成
代码生成将词法分析、语法分析过程的结果生成目标程序,目标程序可以是机器指令代码,也可用汇编语言或其他中间语言表示。目标文件的扩展名为.obj。
四、链接阶段
因为在c++程序通常包含了对其他模块定义的函数和数据的引用,如标准库、自定义库或模块。
所以当编译器提示你链接错误的时候,可以先排查一下相关模块的引用是否正确。
五、运行与调试阶段
首先得保证程序的有效运行,然后进行调试,看所得到的数据是否是我们所需要的。
一个好的程序员,不但需要优秀的编码能力,debug能力也必不可少。如果能快速找到问题,会大大减少我们的开发周期。常用的调试方法如:断点调试、通过打印日志进行调试。在合适的时候使用合适的方法,会有意想不到的效果。