Bootstrap

【C++】一、Visual Studio 2017使用教程:内存窗口、预处理文件、obj文件,调试优化

概述

记录一下Cherno的vs配置下载地址
https://thecherno.com/vs/

C++源码到可执行几个阶段

  1. 预处理 (Preprocessing)
  2. 编译 (Compilation)
  3. 汇编 (Assembly)
  4. 链接 (Linking)

编译期(Compile)

修改项目properties后输出文件需要重新编译使用Ctrl+F7
注意:Ctrl+F7只做该文件编译不做链接

查看预处理后的文件

// Multipy.cpp
int Multipy(int a, int b) {
	int result = a * b;
	return result;
}

在这里插入图片描述
使用Ctrl+F7编译main.cpp
在这里插入图片描述

查看obj文件

在这里插入图片描述
生成Multipy.asm
将二进制obj文件变为可读
在这里插入图片描述

开启编译器调试优化

在这里插入图片描述

就发现生成的Multipy.asm变小了

编译报错

1>cl : Command line error D8016: '/O2' and '/RTC1' command-line options are incompatible

图示位置设置为default

这只是编译器插入以帮助我们进行调试的代码

在这里插入图片描述

链接期(Linking)

cpp源文件加载成可执行文件的过程

报错信息概述

使用Ctrl+F7编译这个文件

这个cpp中return a*b缺少;
在这里插入图片描述

1>c:\projects\project1\project1\main.cpp(9): error C2143: syntax error: missing ';' before '}'

C2143:C标记编译器出错,后面是错误码

我们改正;报错后重试
在这里插入图片描述

1>C:\Project1\Debug\Project1.exe : fatal error LNK1120: 1 unresolved externals

LNK1120:LNK标记链接出错,后面是错误码

自定义入口点

配置的是Application,exe中会有一个入口点
在这里插入图片描述
EntryPoint设置入口点可以不是main函数
在这里插入图片描述

调试

内存窗口

在这里插入图片描述

值转16进制查看

在这里插入图片描述

查看汇编代码

在这里插入图片描述

注意

项目建议不要放C盘,有可能出现 Linking Error 无法写入错误

;