C++入门(一)— 使用VScode开发简介

文章目录

  • C++ 介绍
  • C++ 擅长领域
  • C++ 程序是如何开发
  • 编译器、链接器和库
    • 编译预处理
    • 编译阶段
    • 汇编阶段
    • 链接阶段
  • 安装集成开发环境 (IDE)
  • 配置编译器:构建配置
  • 配置编译器:编译器扩展
  • 配置编译器:警告和错误级别
  • 配置编译器:选择语言标准

C++ 介绍

C++(发音为“see plus plus”)由贝尔实验室的Bjarne Stroustrup开发,作为C的扩展,从1979年开始。C++ 为 C 语言添加了许多新特性,也许最好将其视为 C 的超集,尽管这并不完全正确(因为 C99 引入了一些 C++ 中不存在的功能)。C++之所以声名鹊起,主要是因为它是一种面向对象的语言。至于什么是“对象”,以及它与传统编程方法有何不同,我们将在后面的章节中介绍。

C++在1998年由ISO委员会标准化(这意味着ISO标准委员会批准了描述C++语言的文档,以帮助确保所有编译器都遵守同一组标准)。2003年发布了该语言的一个小更新(称为C++03)。

从那时起,对 C++ 语言进行了五次重大更新(C++11、C++14、C++17、C++20 和 C++23),每次都增加了额外的功能。特别是C++11增加了大量的新功能,并被广泛认为是该语言的新基线版本。预计未来每三年左右对该语言进行一次升级。

该语言的每个新正式版本都称为语言标准(或语言规范)。标准以发布年份命名。例如,没有C++15,因为2015年没有新标准。

C++ 擅长领域

以下是一些最有可能用 C++ 编写的常见应用程序类型:

  • 电子游戏
  • 实时系统(例如用于运输、制造等)
  • 高性能金融应用(例如高频交易)
  • 图形化应用和模拟
  • 生产力/办公应用
  • 嵌入式软件
  • 音频和视频处理
  • 人工智能和神经网络

C++ 程序是如何开发

下面是一个图形,概述了一种简单的方法:
请添加图片描述

  • 第 1 步:定义要解决的问题
  • 第 2 步:确定您将如何解决问题
  • 第 3 步:编写程序:
    • 编译阶段
    • 链接阶段
    • 测试程序

编译器、链接器和库

创建三个C++脚本文件:
test.h

int add(int a, int b);

test.cpp

#include "test.h"int add(int a, int b)
{return a + b;
}

main.cpp

#include <iostream>
#include "test.h"int main()
{int sum = add(1, 2);std::cout << "sum: " << sum << std::endl;return 0;
}

然后进行编译,过程步骤:

编译预处理

g++ -E [*.cpp *.h, ...] -o [*.ii],
主要对包含的头文件(#include …), (#define …) 进行处理。

g++ -E test.cpp  test.h  -o test.ii

在test.ii文件可以查看预处理过程
在这里插入图片描述

编译阶段

g++ -S [*.ii ...] -o [*.s]
主要是进行c++的语法检查,检查无误将代码翻译成汇编语言。

g++ -S test.ii -o test.s

在这里插入图片描述

汇编阶段

g++ -c [*.s ...] -o [*.o ... ]
将汇编代码生成可以链接的二进制代码。

g++ -c test.s -o test.o

在这里插入图片描述

链接阶段

g++ [*.o *.so *.a ...] -o main.exe
链接动态库, 静态库, 可执行.o文件,组成可执行文件。

缺保下面这两步执行,并生成 main.o 和 test.o 文件

g++ test.cpp -c -o test.o
g++ main.cpp -c -o main.o 

执行

g++ main.o test.o -o main.exe

生成 main.exe 文件
在这里插入图片描述

最后执行,命令行

./main.exe

在这里插入图片描述
整个编译过程到这里就结束了。

请添加图片描述

安装集成开发环境 (IDE)

对于入门来说,使用Visual Studio (for Windows)是很方便的。

我这里使用的VSCode+MinGW,个人习惯罢了。

配置编译器:构建配置

首次运行程序时,在资源管理器窗格中的 .vscode 文件夹下创建了一个名为 tasks.json 的新文件。打开tasks.json文件,找到“args”,然后在该部分中找到“${file}”行。

在“${file}”行上方,在调试时添加包含以下命令(每行一个命令)的新行:
“-ggdb”,

在“${file}”行上方,为发布版本添加包含以下命令(每行一个命令)的新行:
“-O2”,
“-DNDEBUG”,

配置编译器:编译器扩展

禁用编译器扩展,以确保您的程序(和编码实践)保持符合 C++ 标准,并且可以在任何系统上运行。

  • 打开tasks.json文件,找到 ,然后找到该部分中的行。“args”“${file}”
  • 在该行上方,添加一个包含以下命令的新行:“${file}”
    “-pedantic-errors”,

在撰写本文时,VS Code 不会自动在缺少换行符的代码文件的末尾添加换行符(这是 C++ 标准迂腐地要求的)。幸运的是,我们可以告诉 VS Code 这样做:

  • 打开 VS Code,然后转到“文件(如果使用 Mac,则为代码)”>“首选项”>“设置”。这将打开一个设置对话框。
  • 进入搜索栏。insert final newline
  • 在“工作区设置”和“用户设置”选项卡中,确保选中标记为“文件:插入最后换行符”的复选框。

配置编译器:警告和错误级别

将警告级别调到最大,尤其是在学习时。它将帮助您识别可能的问题。

打开tasks.json文件,找到“args”,然后在该部分中找到“${file}”行。

在“${file}”行上方,添加包含以下命令的新行(每行一个):

"-Wall",
"-Weffc++",
"-Wextra",
"-Wconversion",
"-Wsign-conversion",

配置编译器:选择语言标准

下面是代号到最终名称的映射:

c++0x = C++11
c++1y = C++14
c++1z = C++17
c++2a = C++20
c++2b = C++23
C++2c = C++26(尚未最终确定)

对于 VS Code,可以使用编译器标志 、 、 或分别启用 C++11/14/17/20 支持。如果您使用的是 GCC 8 或 9,则需要改用 C++20 支持。“-std=c++11”,“-std=c++14”,“-std=c++17”,“-std=c++20”,“-std=c++2a”,

将适当的语言标准标志(包括双引号和逗号)放在配置文件的 section 中,放在 之前的自己的行上。tasks.json"args"“${file}”

我们还希望将 Intellisense 配置为使用相同的语言标准。对于 C++20,在 中,更改或在其自己的行上添加以下设置:。settings.json"C_Cpp.default.cppStandard": “c++20”

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Vue uniapp和java SpringBoot的汽车充电桩微信小程序

摘要&#xff1a; 随着新能源汽车市场的迅猛发展&#xff0c;汽车充电桩的需求日益增长。为了满足市场需求&#xff0c;本课题开发了一款基于Java SpringBoot后端框架和Vue uniapp前端框架的汽车充电桩微信小程序。该小程序旨在为用户提供一个简洁高效的充电服务平台&#xff0…

Pytest中doctests的测试方法应用!

在 Python 的测试生态中&#xff0c;Pytest 提供了多种灵活且强大的测试工具。其中&#xff0c;doctests 是一种独特而直观的测试方法&#xff0c;通过直接从文档注释中提取和执行测试用例&#xff0c;确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法&…

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

云计算底层技术奥秘、磁盘技术揭秘、虚拟化管理、公有云概述

云计算基础 实验图例 虚拟化平台安装 创建虚拟机 1、创建虚拟机 2cpu&#xff0c;4G内存&#xff08;默认用户名: root 密码: a&#xff09; 2、验证 ecs 是否支持虚拟化 [rootecs ~]# grep -Po "vmx|svm" /proc/cpuinfovmx... ...[rootecs ~]# lsmod |grep kvm…

OpenHarmony—Gradle工程适配为Hvigor工程

该适配场景适用于开发者希望将原OpenHarmony API 7的工程升级到OpenHarmony API 9的工程。 原OpenHarmony API 7的工程采用的是Gradle自动化构建工具&#xff0c;而OpenHarmony API 9的工程则采用Hvigor自动化构建工具&#xff0c;由于Gradle构建工具和Hvigor构建工具的配置文…

自动化测试系列 —— UI自动化测试!

UI 测试是一种测试类型&#xff0c;也称为用户界面测试&#xff0c;通过该测试&#xff0c;我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要&#xff0c;通过执行 UI 测试…

win11安装Telnet功能

win11上很多设置都可以直接搜索了&#xff0c;菜单功能也总是换位置&#xff0c;记录一下。 搜索可选功能 选择可选功能 或者 添加可选功能到最地下选更多Windows功能 选择Telnet客户端即可

企业局域网传输文件最快的方式有哪些?

在当今企业运营的背景下&#xff0c;文件的传递和交换&#xff0c;无论是在公司内部网络还是跨越不同网络环境&#xff0c;都是日常业务运作的关键环节。这种文件交换对于团队协作以及与外部合作伙伴的数据共享至关重要&#xff0c;而一个高效且安全的文件传输系统则是提高工作…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名&#xff0c;新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;删除&#xff0c;重命名的基本操作支持打开图片&…

git远程仓库基本操作

目录 gitremote &#xff08;查看远程仓库&#xff09; git remote add [仓库名] [url] git clone [url]&#xff08;克隆远程仓库到本地&#xff09; git push [名][分支名]&#xff08;提交到远程仓库&#xff09;​编辑 git pull [名][分支名]从远程仓库拉取​编辑 注意操作…

图形绘制-仪表盘(3)

本章节我们介绍如何绘制仪表盘内的车速、单位&#xff08;Km/h&#xff09;、标题等信息。 效果如下&#xff1a; 关于通过继承重写QWidget的绘制事件paintEvent()&#xff0c;来绘制仪表盘的基础操作&#xff0c;请看 《图形绘制-仪表盘&#xff08;1&#xff09;-CSDN博客》…

鸿蒙南向开发——GN快速入门指南

运行GN(Generate Ninja) 运行gn&#xff0c;你只需从命令行运行gn&#xff0c;对于大型项目&#xff0c;GN是与源码一起的。 对于Chromium和基于Chromium的项目&#xff0c;有一个在depot_tools中的脚本&#xff0c;它需要加入到你的PATH环境变量中。该脚本将在包含当前目录的…