浅谈C++编译过程

概述

总共三步走,预编译,编译,链接,接下来会讲具体做了啥事儿和场景

预编译

预编译也就是在编译之前做的一个事儿,这里会把一些预编译指令的要求给执行然后替换,预编译指令有 #include  #define  #ifdef  #ifndef  #endif    #elif   #else

预编译的过程就是相当于把预编译指令的东西进行了一个替换,#define M  5    也就是把所有M的地方变成5,把#include的地方变成include的内容,到编译的时候所有预编译指令的任务就完成了,因为已经实施完了所有的替换。

#ifndef  hanhan
    #define hanhan
    #include "_hanhan_father"
    class hanhan:hanhan_father{ //用到hanhan_father头文件里的类来进行继承
         ...
    }
#endif    

解释下这段代码,首先我们入门的时候经常只要编写一个文件就可以了,但是后面如果要做项目和入职工作的话都要编写.h文件进行函数的声明,但是如果我们多个文件都包含了头文件,相当于是把头文件里面的事情做了多次,这样是很耗费时间的,那么我们实际上只要弄一次就够了,所以我们相当于弄了个预编译的宏当标记变量代表只调用一次,这样就避免了无效的编译

这里证明一下,我找到了我文件目录下的stdio.h文件,里面都是些系统调用,然后就是写声明了(因为.h文件会被多个文件所包含,如果有定义或者实现的话就会产生重复

编译

将.c或者.cpp文件编译成一个opj目标文件,这个步骤也就是对源文件产生一个临时文件然后翻译成了机器语言

链接

把opj文件再和标准库链接在一起变成一个可以运行的exe文件

原文地址:https://www.cnblogs.com/Lis-/p/12571308.html