在命令行中编译并运行 C++ 程序

--阅读《 C++ primer》读书笔记

很多初学者写完第一个 C++ 程序后,不知道如何在命令行中编译并运行。博主学了c++一年多了,一直都在IDE中开发,今天偶然学习到用命令行的方式,逐步编译运行代码,这也是为了马上要学习的Linux打点基础吧!

本文将以 Windows 系统 为例,介绍从创建文件到编译运行的完整流程,并简要说明 clg++ 两种编译器的用法。


1. 创建并编辑源文件

首先,打开命令行窗口(cmd 或 PowerShell),切换到目标文件夹,例如:

cd C:\hello

接着,使用记事本创建并编辑一个源文件:

notepad hello.cpp

执行后会弹出记事本,输入你的 C++ 代码并保存。


2. 使用 MSVC 编译器(cl)

如果你安装了 Visual Studio 的开发者工具(自带 MSVC 编译器),可以直接在命令行中使用 cl 命令进行编译。

语法如下:

cl /EHsc hello.cpp

编译完成后,会在当前目录下生成:

  • 一个 .obj 文件(目标文件)
  • 一个 .exe 文件(可执行程序)

此时只需运行 exe 文件即可:

hello.exe

易错点:

C:\hello>cl /EHsc hello.cpp 'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

当你编译时报错,这是因为c1.exe 并不是用户直接调用的编译器命令,它是 MSVC 编译器(cl.exe)底层调用的一个编译器内核程序。所以需要打开vs的命令行窗口(如图红箭头),当然,要是直接想在cmd中编译以及运行,可以看看第二种方法。

3. 使用 GNU 编译器(g++)

如果你安装了 MinGW 或其他支持 Windows 的 GNU 编译器,也可以使用 g++ 来编译。

检测是否按照gcc的命令:

gcc --version

编译语法如下:

g++ hello.cpp -o hello

这里:

  • hello.cpp 是源文件
  • -o hello 表示输出一个名为 hello.exe 的可执行文件

编译成功后,运行:

hello.exe

即可看到程序的输出。


4. 小结

  • Windows 下clg++ 都能编译 C++ 程序,最终得到的是 .exe 文件。
  • Linux / macOS 下,使用 g++ 编译时默认生成 a.out,运行时需要输入 ./a.out,或者通过 -o 参数指定输出文件名。

Read more

解决 Android WebView 无法加载 H5 页面常见问题的实用指南

解决 Android WebView 无法加载 H5 页面常见问题的实用指南

目录 1. WebView 简介 2. 常见问题 3. 网络权限设置 4. 启用 JavaScript 5. DOM Storage 的重要性 6. 处理 HTTPS 问题 7. 设置 WebViewClient 8. 调试工具 9. 其他调试技巧 10. 结论 相关推荐 1. WebView 简介         Android WebView 是一种视图组件,使得 Android 应用能够显示网页内容。它基于 Chromium,具备现代浏览器的许多功能,包括支持 HTML5、CSS3 和 JavaScript。这使得 WebView 成为展示在线内容和混合应用开发的理想选择。 2.

By Ne0inhk
【递归,搜索与回溯算法 & 记忆化搜索】深入理解记忆化搜索算法:记忆化搜索算法小专题

【递归,搜索与回溯算法 & 记忆化搜索】深入理解记忆化搜索算法:记忆化搜索算法小专题

前言:实现记忆化搜索的一般步骤      (1) 实现记忆化搜索代码步骤         (2) 如何将暴搜代码转换成记忆化搜索代码?         (3)如何添加一个备忘录?         斐波那契数     题目解析         算法原理         解法一:递归        时间复杂度高是因为递归展开树有很多次重复计算,我们可以优化这些重复的计算;我们可以创建一个备忘录,当计算其中一个分支时,把计算出的 d(i) 放入一个"备忘录"中 ( i = 1 ....... n ),当递归其他分支时,我们通过备忘录存储好的计算结果,减少递归树额外重复的展开;     解法二:记忆化搜索    当我们在递归的时候,发现递归过程会重复进行完全相同的问题,我们就把这些完全相同的问题存储到额外创建的"备忘录"中,再后续递归出现相同问题,直接从备忘录中拿计算好的结果即可,避免不必要的重复递归;  所以记忆化搜索,就是一个带备忘录的递归;记忆化搜索,其实也是剪枝的一种方式,在本题使用记忆化搜索,就能把指数级别的时间复杂度降到常数

By Ne0inhk
【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦

【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦

目录 【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦 一、为什么网络错误处理一定要下沉到 Axios 层 二、Axios 拦截器 interceptors 1、拦截器的基础应用 2、错误分级和策略映射的设计 3、错误对象标准化 三、结语         作者:watermelo37         ZEEKLOG优质创作者、华为云云享专家、阿里云专家博主、腾讯云“创作之星”特邀作者、火山KOL、支付宝合作作者,全平台博客昵称watermelo37。         一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,Java、Docker、Python、LLM均有涉猎。 --------------------------------------------------------------------- 温柔地对待温柔的人,包容的三观就是最大的温柔。 --------------------------------------------------------------------- 【前

By Ne0inhk

AI Skills:前端新的效率神器!

近来,AI 领域有个火爆的话题:Skills。 Github 上被疯狂 star 的仓库,很多都是和 skills 有关的。 有的仓库仅仅上线三个月就获得了快 50K 的 star,Skills 的火热可见一斑。 不管是大模型,还是 Cursor、Codex、Claude、Trae、Copilot 等编程 IDE 都在争先支持 Skills。 围绕 Skills,它们在做的就是为了完成一件事情:技能是通过学习和反复练习获得的,而 Skills 是把经验和最佳实践沉淀为 AI 能力,将“知道”转化为“做到”的本领。 详解什么是 Skills 要说清楚什么是 Skills,先来了解一下关于 AI 的 2

By Ne0inhk