visual studio中C/C++工程配置详解

前言

随着互联网行业的发展,越来越多的同学涌入c/c++程序开发的行列中.c/c++语言体系较为复杂,学习难度偏高.
一是C++的语法比较复杂,其中难点在于内存和指针,一个合格的C++程序员需要深入理解内存与指针
二是C++编译与工程配置较为复杂,其中涉及到预编译,编译,链接等流程
本文不做内存与指针的赘述,我们来讲讲工程配置的要点

一、C/C++ 编译的四个阶段

在了解工程配置之前,我们有必要了解一下c/c++的编译阶段,c/c++程序编译为可执行程序分为四个阶段,预编译,编译,汇编,链接,通常情况下编译只针对源文件,不针对头文件编译(原因在预编译流程中讲解)

预编译

预编译是对 源文件 中的预编译指令做处理 ,也就是以 ‘#’ 开头的代码行.
如果是预编译指令,就执行预编译判断,选择哪些代码保留,哪些代码参与编译.
如果是宏定义,就把代码中使用到的宏进行文本替换
如果是#include 就将头文件中的代码展开到当前#include位置
预编译期间还会同时添加行号,删除注释行

编译

编译器在编译期间会把c/c++编写的代码通过词法分析,语法分析,语义分析
在这个期间如果有错误,通常会报以下错误
error C2143: 语法错误: 缺少“;”(在“}”的前面)
error C2660: “printf”: 函数不接受 0 个参数
error C2065: “xxx”: 未声明的标识符 等

汇编

编译过程没有语法错误的话,就会将 预编译优化后的代码转为汇编代码,我们可以把编译过程和汇编过程理解为一个阶段

链接

汇编完成之后,代码中使用到的类型,函数将会按照调用约定将函数名添加前缀和后缀,类似于

然后将库和所有编译的函数绑定在一起.最终生成出可执行文件或者库文件

二、工程配置说明

在明白了c/c++编译过程之后,就能明白visual studio c/c++工程配置的一些属性的作用了
活动解决方案 & 活动解决方案平台
活动解决方案是对整个工程配置的整合,可以理解为一个活动解决方案就是一套工程配置,通常和活动解决方案平台关联.可以定义不同的活动解决方案与平台

常规配置

visual studio中C/C++工程配置详解_第1张图片

输出目录是指生成的exe或者库文件的存放目录以及调试信息(PDB文件)
中间目录是用于存放汇编完成的中间文件
配置类型是指最终生成什么文件 exe dll lib 等
windowsSDK版本 选择系统平台库版本
平台工具集 指定使用那个版本的编译器来生成
C/C++语言标准 ISO 认定的语言标准版本

高级配置

visual studio中C/C++工程配置详解_第2张图片

高级属性中一般不需要主动设置,其中有一点需要注意
字符集 使用Unicode字符集会在添加预定义宏UNICODE ,而多字节字符集不会

调试

visual studio中C/C++工程配置详解_第3张图片

调试可以配置不同的调试器调试器,一般默认使用本地Windows调试器
命令 可以向可执行程序添加一些指令 例如: git.exe --init --help
工作目录 工作目录是指运行调试时,程序的启动目录 比如设置为 d:/res 那么调试时会将d:/res设置为exe的根目录
附加 是否以附加的方式运行调试器

C/C++

常规

visual studio中C/C++工程配置详解_第4张图片

附加包含目录 附加包含目录是比较重要的一个配置,用于添加头文件的搜索目录,找不到头文件的错误可以设置这一项解决
警告等级 警告等级越高,在编译期间的警告信息越详细
多处理器编译 是否使用多线程编译

预处理器

预处理器定义 定义一些全局的宏

代码生成

启用C++异常 是否开启C++异常
运行库 不同的运行库不可以一起使用(MT/MD),如果项目中使用到编译好的第三方库,需要注意这一点
浮点模型 浮点模型默认精度就可以了

预编译头

如果使用预编译头的话,编译器会默认预编译 设置的头文件,并保存在预编译头输出文件

链接器

链接器几乎不用设置太多内容,下面针对常见问题进行说明

常规

显示进度 是否显示链接进度
附加库目录 如果项目中使用到第三方静态库(.lib),可以将静态库所在的目录添加到这个属性栏中
将链接器警告视为错误 在一些要求严格的项目中会使用到

输入

附加依赖项 这一属性用来填写使用到的第三方库文件的具体名称(可以是路径+文件名,也可以是文件名)

希望这些可以帮助到大家,编程学习本身就是个无止境的过程.只有把所学到的知识系统性的结合起来,才能让自己变得更加强大.最后,如果觉得我的文章有用,可以动动你们发财的小手帮我点个赞,谢谢啦!

你可能感兴趣的:(C++,后端,C++踩坑笔记,项目搭建,c++,visual,studio)