C++ 预处理、编译、汇编、链接

C++程序成为可执行文件需要经历预处理、编译、优化、汇编和链接五个阶段。预处理包括宏定义、条件编译和头文件包含等操作;编译阶段将预处理后的代码转换成汇编代码;优化程序提高代码运行效率;汇编程序将汇编代码转换成机器语言;最后链接阶段将各个目标文件整合,生成可执行程序。预编译头文件如stdafx.h用于加速编译过程。
摘要由CSDN通过智能技术生成

一个C++程序一般需要经过以下几个步骤才能成为可执行程序:


那么,在以上的每一步中,编译器到底做了哪些工作呢?

一、编译器预处理

C++编译器自带预处理器,在程序编译之前,由预处理器对C++源程序完成预处理工作。

预处理主要将源程序中的宏定义指令、条件编译指令、头文件包含指令以及特殊符号完成相应的替换工作。

预处理指令#include用于包含头文件,有两种形式:#include <xxx.h>,#include "xxx.h"。
尖括号形式表示被包含的文件在系统目录中。如果被包含的文件不一定在系统目录中,应该用双引号形式。
在双引号形式中可以指出文件路径和文件名。如果在双引号中没有给出绝对路径,

则默认为用户当前目录中的文件,此时系统首先在用户当前目录中寻找要包含的文件,

若找不到再在系统目录中查找。对于用户自己编写的头文件,宜用双引号形式。

对于系统提供的头文件,既可以用尖括号形式,也可以用双引号形式,

都能找到被包含的文件,但显然用尖括号形式更直截了当,效率更高。
./表示当前目录,../表示当前目录的父目录。

stdafx.h

在VS中新建一个WIN32工程时,编译器一般默认会在主程序中添加一条#include"stdafs.h"语句。

而stdafx.h只包含如下几行引用头文件的代码:

<span style="font-size:18px;">// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO:  在此处引用程序需要的其他头文件
</span>
而在stdafx.cpp中,仅有一条语
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值