【C++】环境搭建及基本工作流程

news2024/11/24 0:30:53

C++

当你需要写性能良好的代码时,C++仍是不二选择
如果你想访问硬件、如果你想对硬件进行控制,C++仍是首选。
所有的游戏引擎都是用C++编写的,因为C++可以直接控制硬件。

原理:
C++代码-->编译器编译comple-->目标平台的机器码-->放入cpu,cpu就会执行这些指令。
目标平台的机器码是你目标设备上的cpu实际执行的指令。所以用C++可以控制cpu执行的每一条指令。
你只要找到你的目标平台输出机器码的编译器,C++就可以运行在你的目标平台上。比如,x64编译器输出x64机器代码,从而可以在64位的cpu上运行。
所以,你只要有一个目标平台的编译器,C++就可以被编译成该平台上运行的本地代码

一、环境搭建
工具:
电脑+工具
工具取决于你电脑上的操作系统:windows、mac、linux
你可以在文本编辑器:记事本上写C++代码:
在txt文件中写C++代码-->编译器-->可执行二进制文件-->运行

但是,用记事本写代码实在是太费劲了,你还是需要一个开发环境,也就是集成开发环境IDE,也就是一个可以帮你编写和调试代码的软件工具。所以如果你是在windows平台上,用Microsoft VisualStudio就可以,而且这个IDE还有很多插件,可以让你在PC端、移动终端、游戏机等终端。

Microsoft VisualStudio安装包下载地址:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器
下载一个社区版的就可以,免费。

二、写C++程序的基本流程
第一步:创建项目及文件:

第二步:先写源文件Main.cpp:

点击上面的绿色空心三角,是编译并执行的意思,就出现下面的output及Debug Console,这一步我们只是写源文件代码,所以你可以先不点击这个三角。

第三步:把源文件myfirst.cpp编译成可执行的二进制文件
(1)编译器先处理预处理语句:#include 。编译器会将iostream文件内容全部拷贝到myfirst.cpp代码中。因为只有包含了iostream内容的代码才可以使用cout、cin等这些函数。说明:iostream是标准输入输出流,就是用键盘和屏幕输入输出数据。
(2)编译:编译器将所有代码(包括头文件)转化为机器代码。
a、如何转化?下面是设置的转化规则:

项目中的每一个.cpp文件都会被编译(其中包括被拷贝进来的头文件代码,不是头文件本身啊!),每个.cpp文件先都被编译成了一个object file(目标文件),如果你用的是vs,那生成的目标文件就是.obj文件。然后再把这些独立的.obj文件合并成一个可执行文件,就是.exe文件,而这个过程就要用到上图的链接Linker,就是把所有的.obj文件link到一起,形成一个.exe文件。不过这个过程也是非常复杂的,以后单独把这个过程拿出来讲。

b、编译操作:ctrl+F7快捷键。使用ctrl+F7快捷键就可以使用上图的编译规则编译了。除了ctrl+F7还可以通过下面两种方式进行编译:

c、编译过程:

说明:上面的编译过程是仅仅编译了一个Main.cpp一个文件的过程,所以这个过程是不会进行链接Link的。
d、编译结果:编译器编译后生成了什么?

e、多个C++文件同时进行编译的情况:

以上就是编译的基本流程,其实也就是个大概的整体过程,下一篇博文将深度拆解编译流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1827018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[算法刷题—二分法]寻找插入位置

题目展示: 本道题本身并不是很难,主要是学习和分析二分查找插入位置的方法。 首先大体上分为两种情况: 一.target在待查找的数组之中,返回对应值的下标索引。 二.target不在待查找的数组之中,需要返回target插入位置的索引(原数组有序) 第一种情况不难&#xff…

视图-什么是(VIEW)?怎么创建(CREATE VIEW)?怎么删除(DROP)?怎么用(SELECT/INSERT/UPDATE/DELETE)?

一、引言 之前对数据库的操作都是针对基本关系表,操作都是在数据库的全局逻辑模式上进行的,而在实际的数据库系统中,可能用户只关心或只被允许使用数据库中的某些基本关系表或基本关系表中的某些属性列,这些数据构成了数据库的外…

基于SVD的点云配准(下)

点云配准及特征提取详细解读 本篇博客将介绍一个用于点云配准的 C++ 代码示例,该示例使用 PCL(Point Cloud Library)库来处理和配准两个点云数据集。我们将逐步解析代码的关键部分,并解释每个步骤的作用。 代码说明 代码的整体结构及其主要功能: int main(int argc, ch…

Vue 状态管理:从Vuex到Pinia,Vue 3官方推荐的状态管理库深度解析

大家好,我是前端宝哥。 在编程界有句老话:“命名和缓存失效是世上两大难题。” 我得说,在现代Web应用的状态管理上,这难题得排第三! 今天,咱们来深挖一下Vue的状态管理之道,并介绍一个超直观的解…

汽车IVI中控开发入门及进阶(二十八):视频SERDES芯片

前言: SerDes不是很常见,SerDes是将Ser和Des两种产品组合在一起的名称。Ser是Serializer或“并串转换器”的缩写,Des是Deserializer或“串并转换器”的简写。 Serdes是不是必须的?上一节介绍了camera,上上节也研究了video decoder,那么带摄像头的应用应该具体选哪个方案…

从踢足球到数字孪生

前言 贵州“村超”的火热现象是一个多方面因素共同作用的结果,它不仅是一场体育赛事,更是一个文化现象,反映了时代的精神和人民的情感诉求,同时也推动了乡村振兴和地区发展。足球的魅力是多方面的,它不仅仅是一项运动,更是一种全球性的文化现象。 简单规则下的无限变化:…

MySQL数据操作与查询- select 数据查询

一、select 选择列表 1、select基本结构 select 字段列表 from 表名 where 条件表达式 说明: (1) 必须的子句只有 select 子句和 from 子句。 (2)where 子句用于对查询结果进行过滤。 2、选择(查询&am…

【会议征稿,IEEE出版】第六届物联网、自动化和人工智能国际学术会议(IoTAAI 2024,7月26-28)

第六届物联网、自动化和人工智能国际会议(IoTAAI 2024)将于2024年07月26-28日在中国广州召开。 会议旨在拓展国际科技学术交流渠道,搭建学术资源共享平台,促进全球范围内的科技创新,提升中外学术合作。会议还鼓励不同领…

再谈软件设计中的抽象思维(下),从FizzBuzz到规则引擎

作为《程序员的底层思维》出版两年之后的再回顾,在上一篇《再谈软件设计中的抽象思维(上),从封装变化开始》中,我介绍了抽象设计的本质是发现变化点,结合问题域,提炼共性,沉淀领域知…

Golang | Leetcode Golang题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; import ("fmt" )func reverseWords(s string) string {//1.使用双指针删除冗余的空格slowIndex, fastIndex : 0, 0b : []byte(s)//删除头部冗余空格for len(b) > 0 && fastIndex < len(b) && b[fastIndex]…

建造者模式(大话设计模式)C/C++版本

建造者模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class&#xff0c;产品类&#xff0c;由多个…

【Java】Object类中的toString、equals方法

Object类 所有类都直接或间接的继承自Object类&#xff0c;Object类是所有Java类的根基类。 也就意味着所有的Java对象都拥有Object类的属性和方法。 如果在类的声明中未使用extends关键字指明其父类&#xff0c;则默认继承Object类。 toString()方法 【1】Object类的toStr…

植物大战僵尸杂交版 v2.0.88 mac版 Plants vs. Zombies 杂交版下载

特别注意&#xff1a;该游戏最低系统要求为macOS Sonoma 14.X&#xff0c;低于此系统版本的请勿下载&#xff01; 游戏介绍 植物大战僵尸杂交版是由B站UP主“潜艇伟伟迷”制作的一款结合了《植物大战僵尸》原有元素与创新玩法的游戏。这款游戏以其独特的“杂交”植物概念在B站…

【TypeScript】泛型工具

跟着 小满zs 学 ts&#xff1a;学习TypeScript24&#xff08;TS进阶用法-泛型工具&#xff09;_ts泛型工具-CSDN博客 Partial 所有属性可选的意思Required 所有属性必选的意思Pick 提取部分属性Exclude 排除部分属性emit 排除部分属性并且返回新的类型 Partial 属性变为可选。…

Python基础教程(二十):SMTP发送邮件

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Python 小市值股票模型代码及回测分析

目录 一、模型介绍 二、代码详解 2.1 初始化函数 2.2 股票筛选过滤函数 2.3 止损函数 2.4 开盘时运行函数 2.5 调仓函数 三、回测结果分析 3.1 收益净值图与概述 3.2 模型收益概览 3.3 年度收益图 3.4 月度收益的时间序列 3.5 月度收益热力图 3.6 月度收益频次分…

CorelDraw 2024软件安装包下载 丨不限速下载丨亲测好用

​简介&#xff1a; CorelDRAW Graphics Suite 订阅版拥有配备齐全的专业设计工具包&#xff0c;可以通过非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅就能获得令人难以置信的持续价值&#xff0c;即时、有保障地获得独家的新功能和内容、…

conda安装pytorch使用清华源

原命令&#xff0c;例&#xff1a; # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch使用清华源&#xff0c;例&#xff1a; # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatool…

Qwen2——阿里巴巴最新的多语言模型挑战 Llama 3 等 SOTA

引言 经过几个月的期待&#xff0c; 阿里巴巴 Qwen 团队终于发布了 Qwen2 – 他们强大的语言模型系列的下一代发展。 Qwen2 代表了一次重大飞跃&#xff0c;拥有尖端的进步&#xff0c;有可能将其定位为 Meta 著名的最佳替代品 骆驼3 模型。在本次技术深入探讨中&#xff0c;我…

【redis的基本数据类型】

基本数据类型 Redis的基本数据类型有五种&#xff0c;分别是 StringListHashSetSortedSet 这些基本的数据类型构成了其他数据类型的基石&#xff0c;而这些基本数据类型又对应着不同的底层实现&#xff0c;不同的底层实现往往是针对不同的使用场景做的特殊的优化&#xff0c;…