C++学习(一)编译器、链接器、函数

C++编译器是如何工作

        编译器在生成obj时,首先需要预处理我们的代码,意味着所有的预处理器语句都会先处理,一旦代码被预处理了,接下来将进行记号化和解析,把C++语言整理成编译器能够理解和推理的格式。编译器的工作就是转换我们所有的代码,转换成常量数据或指令,一旦编译器创建了这个抽象语法树,它可以开始实际生成代码,也就是CPU将执行的代码。

        我们常用的预处理语句有include、if ifdef、pragma语句。#include语句指定了想要包含的文件,预处理器打开这个文件,阅读它的所有内容,然后粘贴到你写的文件中。

C++链接器是如何工作

        链接是一个过程,当我们从源C++文件转到实际的可执行二进制文件,第一阶段是编译源文件,一旦将文件编译完成,就需要通过一个叫做链接的过程,主要工作就是找到每个符号和函数值哪里,并把他们连接起来。每个文件被编译成一个单独的目标文件,一个翻译单元,彼此之间没有关系,这些文件不能交互。

        如果使用Ctrl+F7,会进行编译阶段,如果点击Build的话,编译和链接两个过程都会执行。如果报错是以C开头,就说明是发生在编译阶段,如果是LNK开头,说明是发生在链接阶段。

C++函数

        函数就是我们写的代码块,被设计用来执行特定的任务,能够用来避免代码重复,每个程序都是由一系列函数组成的,函数分为声明和定义,声明在头文件中。

        头文件通常用于声明某些类型的函数,以便能够被使用在程序中。头文件通常会被包含在CPP文件中,我们要做的就是复制粘贴,通过#include预处理指令来将头文件的内容放入到CPP文件,因此#include具有复制粘贴的能力,把文件放入到另一个文件中,

        任何以#开头的东西被称为预处理命令或预处理指令,意味着在实际编译此文件之前它将被优先处理。

        头文件中的 #pragma once:Pragma本质上是一个被发送到编译器或预处理器的预处理指令,pragma要做的就是让编译器只包含这个文件一次。pragma once会监督这个头文件,阻止我们单个头文件多次被包含,并转换为单个翻译单元。

        

//这两个作用都是一样的,用于阻止多次包含文件
#pragma once


#ifndef _XXX_H
#define _XXX_H

......
......
......

#endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值