Visual Studio,第1个hello world,入门C++,分别编译一个可以在Windows和Linux下运行的程序

本人的VxTerm,是在Visual Studio 2022下编写的。

其它的语言工具是不是也可以那么方便的使用,本人并不得而知,至少本人能知道:对于我来说,Visual Studio可以让我觉得C/C++语言非常简单!

一、安装Visual Studio 2022:

自VS2017之后,VS的安装就变得非常的简单,只需要在Visual Studio的官网下载一个安装程序,就可以直接在网上安装完成。由于本人觉得非常没有难度,所以此处不述。自行百度。

二、第1个在Windows中可以运行的C++语言的"Hello world!"

创建新项目:

创建成功后,直接点击:本地Windows调试器,然后就可以得到一个

无意外情况下,就可以看到程序的运行后输入的结果:

编译:调试成功后程序开始运行后,其实就表示程序已经编译成功,在项目设定的输出目录里就已经编译好一个exe程序,找到这个程序双击它就可以运行了。

找到这个程序,双击它,可以看到屏幕一闪,程序运行结束后直接退出了。为了能看清程序运行结果,我们需要在cmd(或Windows11下的终端窗口、PowerShell窗口)中运行:

到这一步,其实没完,因为咱们现在只得到一个debug条件编译下的应用程序,一般的,在debug条件下,编译出来的程序可能是会受到环境组件的限制的,如程序的依赖等,所以,咱们需要把编译方式改成Release条件方式。

在程序的右边,一般都会有一个”解决方案资源管理器“,鼠标右键点项目/属性

在属性页,我们一般需要把”运行库“改成”多线程(/MT)“方式。

平台中的值与主界面中的调试平台的对应设置方式

这些设置值之间的关系,需要充分理解,才能在以后的编写/调试/编译过程中得到预期的结果。

关注我,我将在后续的文章中分享一些相关的经验,互相学习。

三、第1个可以在Linux下运行的C++语言编写的"Hello World!"

VS下可以编写并调用目标的Linux操作系统对程序进行编译,成功后可以得到在目标操作系统中运行的程序。

在此之前,需要准备一个Linux环境。由于本人使用的是Linux虚拟机,以下仅在目标Linux下实现。在Windows11中,也可以非常简单的使用WSL来得到Linux环境,并实现在Windows的Visual Studio编写C++程序然后在Linux下编译运行。

以下假设您已经有了一个可以折腾的Linux环境。

创建新项目:

VS会打开一个向导,引导您如何设置并连接到您的Linux环境中:

在此之前,同时也要求您在您的Linux环境中通过apt等命令安装gcc。

VS其实只是负责协助您编写C++代码,然后把代码编译成为.o文件,完成后会把编译出来的.o文件拷贝到您的Linux环境下,再调用Linux中你安装好的gcc来对你的代码文件进行连接/编译,最终编译成为工程项目中设置的输出文件。

第一次使用之前,VS会打开一个连接Linux的向导,协助您进行第1个连接,后续可以通过菜单中的”工具/选项/搜索 连接”,找到

连接管理器来创建和维护对Linux的连接。

以上操作成功后,转到main.cpp中,修改代码后,点击

然后就可以得到一个在Linux中运行的结果:

同时,您可以在Linux中的相应目录中找到已经编译好的输出文件:

运行它:在此处运行,可能需要使用./Con...这样的方式,否则可能会找不到这个程序。

当您在指定的目录中找到程序并运行成功,恭喜您!

再回过来看看程序代码:

我这里可以看到printf这个函数下面是显示“未定义标识符printf”的错误标识,但其实这个并不影响代码的编译,因为在Linux的环境下,其上面的 #include <cstdio> 这一行代码能被正确识别,并且其中的头文件中也能正确包含有这个函数的定义,所以最终能在Linux环境下正确的被编译成功。

---

陆续的,希望我能整理出来:我为什么能很容易的就凭着一个VS2022,在C/C++完全零基础的情况下,写出来一个自认为真的很复杂的VxTerm。

谢谢支持。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stm32——OLED篇

技术笔记&#xff01; 一、OLED显示屏介绍&#xff08;了解&#xff09; 1. OLED显示屏简介 二、OLED驱动原理&#xff08;熟悉&#xff09; 1. 驱动OLED驱动芯片的步骤 2. SSD1306工作时序 三、OLED驱动芯片简介&#xff08;掌握&#xff09; 1. 常用SSD1306指令 2. …

apache atlas 如何自定义hook

atals 是开源的数据元数据和数据资产管理平台&#xff0c;平台设计支持强大的图数数据库&#xff0c;nosql&#xff0c;和搜索引擎3个组件构建。都是基于开源构建。 目前市场上开源的元数据管理工具有Atlas&#xff0c; Datahub&#xff0c; Openmetadata等&#xff0c;你要说二…

进程间通信:连接不同程序世界的桥梁

目录 一、进程间通信的重要性 二、常见的进程间通信方式 三、进程间通信的目的 四、进程间通信的本质 在计算机编程的领域中&#xff0c;进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是一个至关重要的概念。当我们在操作系统中运行多个程…

Vue中进行粘贴板粘贴数据(图片、文字等)

在页面中如果需要进行粘贴数据&#xff0c;那么就要读取系统粘贴板clipboard&#xff0c;通过此Api来进行粘贴板数据的操作。 目录: 一.封装相关函数1.示例代码&#xff1a;2.代码解释&#xff1a; 二.页面中进行粘贴1.代码示例&#xff1a;2.代码解释&#xff1a; 三.运行结果…

linux day 3

touch 创建文件命令 cat命令&#xff0c;查看文件内容 more命令&#xff0c;查看文件内容。 cat是直接全部显示出来&#xff0c;more是支持翻页&#xff0c;即文件内容过多可以一页一页显示&#xff08;按空格翻页&#xff0c;按Q进行退出&#xff09; cp命令&#xff0c;复制…

数据结构深入理解--栈

目录 一、栈的定义 二、栈的实现 2.1 栈的结构 2.2 栈的初始化 2.3 栈的销毁 2.3 栈元素的插入 2.4 栈元素的删除 2.5 栈顶元素获取 2.6 栈元素有效个数获取 2.7 栈是否为空判断 三、代码总览 Stack.h Stack.c 测试代码:test.c 四、例题 例一&#xff1a; 例二&#xff…

llm.c的Makefile

源码 CC ? clang CFLAGS -Ofast -Wno-unused-result -Wno-ignored-pragmas -Wno-unknown-attributes LDFLAGS LDLIBS -lm INCLUDES CFLAGS_COND -marchnative# Find nvcc SHELL_UNAME $(shell uname) REMOVE_FILES rm -f OUTPUT_FILE -o $ CUDA_OUTPUT_FILE -o $# N…

5.神经网络-激活函数

目录 1. 激活函数不是阶跃函数 1.1 激活函数和阶跃函数都是非线性函数 1.2 激活函数不是阶跃函数 2. sigmoid 函数 2.1 sigmoid 函数表达式 2.2 sigmoid 函数 Python 实现 2.4 sigmoid 函数图 3. ReLU 函数 3.1 ReLU 函数表达式 3.2 ReLU 函数 Python 实现 3.4 ReLU…

Chatgpt的应用场景

文案创作类&#xff1a; 作为一名大型语言模型&#xff0c;ChatGPT可以为使用者提供多种文本处理和文字创作方面的服务&#xff0c;例如&#xff1a; 文本生成和创作 ChatGPT可以基于您提供的主题、关键词或文本段落&#xff0c;生成符合使用者要求的新文本。这些文本可以是文…

Golang | Leetcode Golang题解之第83题删除排序链表中的重复元素

题目&#xff1a; 题解&#xff1a; func deleteDuplicates(head *ListNode) *ListNode {if head nil {return nil}cur : headfor cur.Next ! nil {if cur.Val cur.Next.Val {cur.Next cur.Next.Next} else {cur cur.Next}}return head }

C++的数据结构(二)

一、链表的基本概念 链表&#xff08;Linked List&#xff09;是一种物理存储单元上非连续的、非顺序的线性数据结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点&#xff08;链表中每一个元素称为节点&#xff09;组成&#xff0c;节点…

(二刷)代码随想录第4天|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点

24. 两两交换链表中的节点 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 帮你把链表细节学清楚&#xff01; | LeetCode&#xff1a;24. 两两交换链表中的节点_哔哩哔哩_bilibili 给你一个链表&#xff0c;两两交换其…

【计算机网络】物理层传输介质 习题3

双绞线是用两根绝缘导线绞合而成的&#xff0c;绞合的目的是( )。 A.减少干扰 B.提高传输速度 C.增大传输距离 D.增大抗拉强度 在电缆中采用屏蔽技术带来的好处主要是( ) A.减少信号衰减 B. 减少电磁干扰辐射 C.减少物理损坏 D. 减少电缆的阻抗 利用一根同轴电缆互连主机构成…

docker安装时报错:Error: Nothing to do

安装docker时报以下错误 解决方法&#xff1a; 1.下载关于docker的相关依赖环境 yum -y install yum-utils device-mapper-persistent-data lvm22.设置下载Docker的镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3…

Java 常见集合类

集合的整体框架 Java 的集合&#xff0c;也可以叫做容器&#xff0c;根据集合的整体框架可以看出&#xff0c;主要是两大集合接口&#xff1a;第一个是 Collection 接口&#xff0c;主要用来存放单一的元素对象&#xff1b;另一个是 Map 接口&#xff0c;主要用于存储键值对。…

Linux·基本指令

从本节开始将新开一个关于Linux操作系统的板块&#xff0c;其实Linux也没什么太神秘的&#xff0c;就是一个操作系统(OS)嘛&#xff0c;跟Windows操作系统是一个概念&#xff0c;只不过Windows中的大部分操作都是用光标点击来进行人机交互&#xff0c;但是Linux是通过输入命令行…

SQLite性能测试(插入)

最近一直在思考一个问题&#xff0c;SQLite 做到这么轻量级&#xff0c;那它注定不会像 MySql 一样强性能&#xff0c;那么它的性能怎么样呢&#xff1f;并发量多高呢&#xff1f; 官方解释&#xff1a; About SQLite 最大数据库大小&#xff1a;281TB 最大行大小&#xff1…

俄罗斯方块的代码实现

文章目录 首先是头文件的引入部分接下来是一些预处理指令接下来定义了两个结构体&#xff1a;接下来是全局变量g_hConsoleOutput&#xff0c;用于存储控制台输出句柄。之后是一系列函数的声明最后是main函数源码 首先是头文件的引入部分 包括stdio.h、string.h、stdlib.h、tim…

Neo4j 之安装和 CQL 基本命令学习

正常使用结构化的查询语言 SQL&#xff08;Structured Query Language&#xff09;较多一些&#xff0c;但是像 Neo4j 这种非结构化的图形数据库来说&#xff0c;就不得不学习下 CQL&#xff08;Cypher Query Language&#xff09;语言了。如果你之前学过 《离散数学》或《图论…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第6章 安装Samba

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…