在vs2019的环境下认识C++(3)

这篇博客深入探讨了C++的编译过程,包括预编译阶段的头文件处理,如何查看预处理后的.i文件,以及编译生成的.obj文件和.asm文件的内容。讲解了预编译指令如#include和#define的作用,并通过实例展示了预编译、汇编和优化对代码的影响,包括常量折叠和函数调用的优化。
摘要由CSDN通过智能技术生成

这一篇我们重点讲讲编译(compiling)的相关知识
首先我们要知道在C++中没有文件的概念,这一点或许跟JAVA有所不同,我们在编译器中的文件只是为了更好的识别源码而设立的。.cpp文件对应C++,.h文件对应头文件,这是编译器中已经设置好的。我甚至可以用让编译器对任何种类的文件按C++编译,这是没问题的,文件不代表任何东西。
回到我们之前所写的函数
在这里插入图片描述
如果我们再次观察这两个.obj文件我们可能会惊讶于他们的大小,我们只写了几行代码然而却又几十kb的大小。
这是因为文件中存在#include<iostream>这句话。
在编译的第一阶段,首先会进行的是预编译,常见的形式有include,define,if,ifdef,这里我们先将include。
在预编译时遇到#include<>,编译器会打开该文件,然后复制粘贴所有的代码到本文件
我们再新建一个.cpp文件命名为math,写入

int Multiply(int a, int b)
{
   
	int resualt = a * b;
	return resualt;
}

编译之后我们再次打开文件夹,可以看到:
在这里插入图片描述
同样都是几行代码,math.obj只有3kb。
我们再新建一个头文件,命名为EndBrace.h
在这里插入图片描述
删除头文件中所有的代码然后加上一个右大括号
在这里插入图片描述
我们再来修改math.cpp代码

int Multiply(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值