【c++随笔】C++是如何工作的

本文介绍了C++程序从源文件到可执行二进制文件的过程,包括编译器的作用、预处理、main函数的特殊性、重载运算符以及编译和链接的步骤。通过示例解释了#include、main函数、<<运算符和cin.get()的功能,并详细阐述了编译和链接如何将.cpp文件转化为可运行的.exe文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++是如何工作的

学习如何从简单的从源文件到可执行二进制文件。

编译器

当源文件给到编译器,编译器将其转变为二进制的东西,这些二进制的东西可能是某些库,或者是可执行的程序。今天主要介绍可执行程序。

示例

#include<iostream> //#符号之后的都是预处理语句
int main()
{
  std::cout<<‘’Hello World’’<< std::endl;
  std::cin.get();
}

1.include的含义是它需要找到一个文件,编译器收到源文件后,一看到预处理这条语句,就先处理这个预处理语句,这也是为什么叫预处理语句了,因为它在实际编译发生之前就被处理了。
2.在上面这个例子中,需要找到iostream文件,然后将该文件的内容拷贝到现在的文件内。这些所包含的文件通常被称为“”头文件“”。之所以要包含这个头文件,是因为我们需要一个被调用的函数(std::cout)的声明。std::cout可以让我们在终端打印东西。
3.接下来是main函数,main函数非常重要。因为任何一个C++程序都有main函数。main函数是程序的入口,意思是当我们运行程序时,计算机就从这个函数开始执行代码。当程序还是运行时,计算机会逐行执行代码。当然,程序也可以中断或者改变执行顺序,它们是控制语句或者是函数调用。但最主要的还是一行一行的执行,代码运行完,程序结束。
4.main函数的返回类型是int,但是上述例子中并没有返回int.这是因为mian函数比较特殊,它不一定需要返回值,如果我们没有返回一个值,他会默认我们返回了0.这个只对main函数适用。
5.<< 重载运算符,可以把它理解为一个函数
等价于std::cout.print(“Hello Word”).print(std::endl);
另一层含义是将字符串helloworld推送到cout流中,然后打印到终端,然后推送一个行结束符 std::endl, endl告诉终端跳到下一行。
cin.get函数是等待我们按下enter键,在前往下一句代码之前等待,这个时候程序暂停执行,直到我们按下回车键后,程序继续运行下一行,对于上面的例子,已经没有下一行,所以程序返回0,意味着代码执行完毕。

main.cpp 如何转换成可运行的二进制文件

1.编译器首先处理预处理文件,编译器将iostream文件的内容全部包含进来,也就是拷贝到当前文件中。
2.代码开始被编译,在这个阶段,编译器将所有的C++代码转换为实际机器代码。这一过程与目标平台, 配置, 编译环境有关。
3.项目中的每一个cpp文件都会被编译,仅仅是cpp文件,头文件不会被编译。原因是头文件在预处理的时就已经被包含进来了,cpp文件被编译的时候,包含进来的文件一起被编译了。每个cpp文件都被编译成了一个目标文件。vs,生成的文件后缀是.obj.当有了这些obj文件后,需要把obj合并成一个执行文件。这与链接(linker)有关。linker是将所有的obj文件粘合到一起,把所有的obj文件合并成一个exe文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值