最近工作有点忙,毕业也没多久,确实在企业和学校还是有很大的差距的,这段时间学到了很多很多,也没时间顾及博客了,刚好趁着这个1024稍微放慢脚步,总结总结。
最近用Visual Studio比较频繁,也学到了很多相关的内容,借此博文简单记录一下,全是个人理解,若有地方理解有误还请各位大佬评论指正,万分感谢。
一、Visual Studio运行流程
加入有一个
yy.cpp
文件,当我们在Vistual Studio下点击运行时,该文件大致会经过以下过程:
yy.cpp ===> 预编译器 ===> 生成yycpp.i预处理后的文件(头文件、宏等展开复制) ===> 编译器 ===> yy.asm(汇编文件)
接上一行===> 汇编器 ===> yy.obj\yy.o(yy.obj是Windows下的二进制文件,yy.o是Linux下的二进制文件)
接上一行===> 链接器 ===> yy.exe\yy(yy.exe是Windows下的可执行文件,yy是Linux下的可执行文件)
其中可以核心为
编译器
和
链接器
编译器(Compiler)
主要作用:将头文件、宏等进行展开复制替换,每个.cpp会对应生成二进制文件(.obj),.cpp和.obj一一对应
链接器(Linker)
主要作用:将多个二进制文件(.obj)进行整合成一个exe可执行文件
二、Visual Studio相关配置介绍
1,解决方案配置
Debug和Release大家应该见的很多了,Debug慢,编译器不优化,但有调试信息;Release快,编译器会优化代码,但没调试信息
其实它俩只不过是一套固定的规则模板而已
通过配置也可以将Debug修改成优化、速度优先等,和Release一样
当然Debug和Release有很多区别,比如
Relase下C/C++的优化是优选速度
Debug的则是禁用
那我把Debug的相关配置改成和Release完全一样,实在Debug和Release就完全一样了,但不建议哈!!!
2,Visual Studio的目录结构
这些都是虚拟的文件夹,都是假的,虚拟出来的,硬盘中是不存在这些文件夹的
点击显示所有文件,这才是真正的目录结构
3,查看预编译文件(yycpp.i)
上述介绍过了,在Windows下
.i
是二进制文件,假如我们有个yy.cpp,对其进行预编译,可以得到预处理后的文件
yycpp.i
//yy.cpp#include<iostream>intmain(int argc,char** argv){int a =10;int b =20;int c = a + b;
std::cout <<"The sum of "<< a <<" and "<< b <<" is "<< c << std::endl;
std::cin.get();return0;}
选择实际的配置,我是Debug下,在C/C++的预处理器中,把
预处理得到文件
选项选择
是
,应用,确定
运行程序之后,回到项目文件夹下,可以看到
yycpp.i
预处理文件
打开之后,我滴妈6w多行,这些基本都是头文件
#include <iostream>
的内容,头文件会将对应的内容进行拷贝到这里面,我们的代码实际就框出来那一丢丢
yycpp.i
是我们的程序经过预编译之后的结果
再改回来配置吧
4,查看汇编文件(yycpp.asm)
修改配置,一定要和你当前的配置一致,都是Debug或者Release哈
运行程序,多出来
yycpp.asm
汇编文件
也有小两千行
同样再改回来配置吧
5,程序入口
其实默认的程序入口是
main
函数,在Visual Studio中可以修改程序入口
微软官网文档:/ENTRY(入口点符号)
三、Visual Studio最佳配置
在Visual Studio下创建的时候,最好先创建一个解决方案,如何再创建项目
一个解决方案可以管理多个项目,例如,我这里解决方法为Project1,第一个项目也是Project1
其中
Project1.sln
为解决方案,
Project1.vcxproj
是我们的项目文件配置,它只是一个XML文件,包含了诸如属性表等配置参数信息
Visual Studio本身的目录结构就很奇怪
Ctrl + B
生成一下项目,可以看到该
Project1
项目生成了一个
Project.exe
可执行文件
这个项目生成的exe文件居然在解决方案下的x64里面,而不是项目的x64下
也就是说,若有多个项目,生成的exe文件都会在解决方案下的x64文件夹下
而每个项目对应生成的中间文件却都在对应项目的x64文件夹下
其实这个exe和中间文件都应该分别在对应的项目下才更加符合人性,个人看法哈
Cherno的做法是:exe和中间文件都放在对应项目的bin文件夹下
exe应该输出在对应项目的bin文件夹下的x64文件夹下
中间文件应该输出在对应项目的bin文件夹下的intermediates文件夹下
输出目录就是项目的exe(或者dll)所在路径,中间目录就是一些没啥太大作用的中间文件而已(汇编、二进制文件等)
在配置属性下的常规中可以自定义输出目录和中间目录
可以看到这些都是宏定义的,点击编辑
点击宏,可以查看全部的宏
可以看到宏对应的路径,注意有的宏自带反斜杠
\
,拼接的时候要留意
若要实现上述讲的配置(EV寒霜引擎Cherno同款配置),复制这两个即可
输出目录:
$(SolutionDir)bin\$(Platform)\$(Configuration)\
中间目录:
$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\
再次运行项目
exe文件所在路径
中间文件所在路径
四、Visual Studio 常用快捷键
我使用的是默认的Visual Studio快捷键,列出一些我常用的快捷键
功能快捷键编译(生成obj文件)Ctrl + F7生成(链接成exe可执行文件)Ctrl + B运行(编译+生成)F5Debug运行F10Debug下F10逐过程(不进函数,只拿函数处理后的结果)Debug下F11逐语句(进入函数)Debug下Shift + F11跳到下一个断点;跳出函数右击项目再按A设置该项目为启动项点一下所选中的项目,按Alt + Enter打开该项目的属性Ctrl + K + O同名的.cpp和.h切换Ctrl + M + L折叠/展开函数Ctrl + K + C注释所选行Ctrl + K + U取消所选行注释F3查找下一个Esc快速关闭查找等小窗口
这才写了一丢丢,还有很多东西想写,奈何太累了,太累了,想休息,有空再补充吧~~~
版权归原作者 beyond谚语 所有, 如有侵权,请联系我们删除。