尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

如何像Python一样编译C++代码

如何像Python一样编译C++代码
📅 发布时间:2026/6/18 17:05:05

0. 简介

Python作为一门解释型编程语言,对于人类十分友好,使用起来非常方便,但是计算机运行起来比其它编译型语言慢很多。

C++作为一门编译型编程语言,与Python完全相反,对于人类十分不友好,使用起来非常不方便,但是计算机运行起来飞快。

比如,运行一个 Python 源代码文件时我们只需要在终端里使用下面这行命令:

py .\hello.py

运行效果:


而 编译一个 C++ 程序并运行我们可能需要以下命令:

我这里的源代码文件是用UTF8格式编码的,而中国 Windows 系统的终端默认是用GBK中文编码的,所以导致中文部分的源代码解析错误,打印出来是乱码(C++烦人问题的其中一个,我们后面会解决)
源码:

#include<iostream>usingnamespacestd;intmain(){cout<<"Hello, World!"<<endl;cout<<"你好, World!"<<endl;}

对于C++入门,或者是学习C++信奥算法的孩子们来说,这些编码、命令等非常烦人,为了在学习过程中更快的调试程序,我们可以通过一些配置让C++的编译运行过程 “像” Python一样方便

我们的最终目标是实现一行命令编译并运行:


1. 安装 Python 解释器 (管家)

本文只介绍Windows系统的安装方法,主要是想推荐一下最新的Python Install Manager(pymanager)

下载页面:https://www.python.org/downloads/
如果你的页面是下面这样的,先别着急点击按钮

等它完全加载之后,应该会变成下面这样:

点击之后,浏览器会自动开始下载,下载之后是一个.msix文件

打开这个文件:


这里有pymanager的命令介绍,大家可以自己阅读一下
比如,我们可以在终端 (PowerShell) 中输入py list查看当前已安装的Python解释器

py list

Win + X快捷键打开菜单,里面有终端

如果电脑里有Python这里会显示具体版本,我这是没有安装的例子

输入py install default安装当前最新正式版 Python 解释器

py install default


安装完成:

输入python命令测试一下能否运行交互式python解释器


安装完毕,Ctrl + D退出交互式Python
重新运行py list查看已安装Python

想要让解释器运行某个Python代码文件(模块),可以在该文件所在文件夹内打开终端,或者在终端中用命令将终端工作目录移动到目标文件夹 (不会的可以自行AI)


输入py加目标文件名,可以只写前几个字母,按Tab键系统会有补全提示


pymanager会自动选择刚刚安装的Python解释器,解释并运行
运行结果:

全部安装完毕,可以关闭所有终端窗口啦


2. 安装 C++ 编译器

C++的编译器五花八门,各种历史版本、分支,新人了解起来十分麻烦,不像Python有一个官方,我这只分享其中一种编译器,大家也不用去网站下载了,有可能下载还要挂“梯子”,不然龟速下载。
我放在Gitee上了,版本是GCC15.2:https://gitee.com/LibraTennyson/file-sharing

MinGW全称:Minimal GNU Windows极简版GNU编译器,给Windows用的。
就是把Linux上的GCC编译器,改成能在Windows系统上直接运行的一套工具包

GCC全称:GNU Compiler CollectionGNU编译器集合

GNU是一个做开源软件的组织

GCC里包含了多种语言的编译器:

  • gcc.exe 可以编译C语言
  • g++.exe 可以编译C++语言


下载后把这个压缩包放在一个自己记得住的文件夹内
比如放在一个叫C++编译器的文件夹内,这个文件夹的位置别忘了在哪

然后创建一个名为mingw_x86_64-15.2.0的空文件夹,待会编译器会放在里面
文件名是为了帮助以后回忆起来这个编译器的版本
(C++的编译器版本不像Python的版本那么好区分)

解压我们下载的压缩包,这个压缩包里面有一个叫mingw64的文件夹
(如果你用的是WinRAR,选择解压到当前文件夹即可)

把mingw64文件夹拖到我们刚刚创建的mingw_x86_64-15.2.0文件夹中

进入mingw64的bin文件夹找到g++.exe

选中它,然后按Ctrl + Shift + C快捷键保存文件路径

按Win + X,在弹出菜单中点击系统
在设置页面中点击高级系统设置

点击环境变量:

找到系统变量里的Path,双击打开:

新建:

然后按下Ctrl + V粘贴刚刚复制的路径即可,如果没有,可以回去重新复制一下路径

可以把最后的g++.exe这个部分删了,因为bin文件夹里有很多程序,这样以后这个文件夹里的程序都可以直接用名字调用了

我们打开一个终端,输入g++ --version,看看能否使用g++.exe

g++ --version

可以看到,显示信息和我们下载的版本一致

C++的编码问题我们还没解决,这里暂时不演示编译代码,g++命令配置完成即可


3. 安装IDE

1、Dev C++:https://gesp.ccf.org.cn/101/1002/10032.html
2、Zed:https://zed.dev
3、TRAE:https://www.trae.cn/ 注意是下载TRAE IDE哦

Dev C++我就不多说了,C++少儿编程考试和比赛都指定这个软件
但是Dev C++太老了,代码提示几乎为0,视觉观感也不好,看久了眼睛不舒服,代码折叠等辅助功能也不完善
除了考试的时候忍忍,考前模拟熟悉一下,平时还是用其它IDE练习更方便

Zed 是用 Rust 编程语言编写的,运行起来十分流畅,代码辅助功能十分完善,而且可以一键关闭所有AI功能,在练习时可以不被AI补全功能打扰

TRAE就是纯AI IDE了,强依赖AI的项目可以用它

大家自己研究研究怎么安装哈,我就不详细介绍了


4. Zed 项目配置

我们可以在桌面新建一个文件夹叫AlgorithmPractice
以后做算法练习时可以把代码都放在这个文件夹里
我们打开Zed,先打开设置

我们先把AI关了

打开文件夹,选择你刚刚创建的文件夹

在左侧工作目录下右键,新建文件,输入文件名C++_UTF8.cpp

编写代码:

#include<iostream>usingnamespacestd;intmain(){cout<<"hello, world"<<endl;cout<<"你好,world"<<endl;}

按Ctrl + J快捷键在 Zed 内打开终端

输入命令:

g++ .\C++_UTF8.cpp -o main

运行结束后我们可以在左侧目录下看到,多了一个main.exe文件

继续输入命令:

.\main.exe

正常情况下,中文部分会输出乱码
前面也提到过,Zed默认文件编码都是UTF8格式,而中国Windows系统的终端默认编码格式是GBK格式

4.1 终端格式

我的终端格式这个样子是设置过的

默认的格式应该是在一行的,我设置之后路径和命令分为两行显示
接下来我讲讲怎么设置

在终端中输入zed $PROFILE,会用 Zed 打开PowerShell配置文件
(输入zed $PR然后按Tab键会有补全提示)

在文件中输入以下代码

# 自定义提示符格式 function prompt { # 显示当前路径,然后换行,再显示 > 符号 "$(Get-Location)`n> " }

按Ctrl + S保存
关闭刚刚的终端,按Ctrl + J重新打开一个终端,现在就是更新后的格式

4.2 快速切换编码

刚刚由于我们的终端是GBK格式,所以运行UTF8格式的代码时,中文部分是乱码
我们在配置文件中添加以下代码

# 开机默认UTF8编码,永久设置控制台代码页UTF8 chcp 65001 | Out-Null # 同步PowerShell管道输出编码,解决C++程序中文乱码 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # 一键切UTF8 function Set-UTF8 { chcp 65001 | Out-Null $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 Write-Host "已切换终端编码:UTF-8 (65001)" -ForegroundColor Cyan } # 一键切GBK function Set-GBK { chcp 936 | Out-Null $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::Default Write-Host "已切换终端编码:GBK (936)" -ForegroundColor Yellow }

这段代码可以让终端每次启动时自动切换为UTF8编码格式
如果想要切换也可以使用Set-GBK、Set-UTF8来快速设置编码格式

同样的,保存文件,关闭终端,重新打开终端
你可以在终端中运行一下Set-GBK或Set-UTF8命令,你会发现乱码

这是因为,我们刚刚用zed $PROFILE的时候系统自动新建的配置文件为UTF8格式
要想正常显示中文我们得用UTF-8-BOM格式保存
我们先找到这个配置文件的位置

把Microsoft.PowerShell_profile.ps1这个文件用Windows记事本打开
点击另存为
保存时,类型选所有,编码格式选UTF-8 BOM,文件名和之前保持一直,提示文件已存在,确认替换

保存之后,重新打开终端再运行Set-GBK或Set-UTF8命令就都正常了


我们切换为UTF8格式然后重新运行一下我们之前编译的main.exe文件

现在就能正常运行UTF8格式的C++代码了

4.3 简化编译运行命令

我们之前C++的命令分为两行,一行编译,一行运行编译生成的exe文件

g++ .\C++_UTF8.cpp -o main .\main.exe

我们要通过添加PowerShell配置实现一行命令完成编译、运行

g++ .\C++_UTF8.cpp

只需要继续在PowerShell配置文件中添加下面代码

function g++ { # ========== 新增:快速透传判断(非编译运行场景直接调用原生g++) ========== $passThroughArgs = @('--version', '--help', '-v', '-c', '-E', '-S', '-MM', '-M') $shouldPassThrough = $false foreach ($arg in $args) { if ($passThroughArgs -contains $arg) { $shouldPassThrough = $true break } } # 命中透传规则:原封不动调用原生g++.exe,直接返回 if ($shouldPassThrough) { g++.exe @args return } # ========================================================================== $outName = "main" $userSpecifiedOut = $false $newArgs = @() # 解析参数,找出用户是否指定了 -o for ($i = 0; $i -lt $args.Count; $i++) { $arg = $args[$i] if ($arg -eq "-o" -and $i+1 -lt $args.Count) { $outName = $args[$i+1] $userSpecifiedOut = $true $i++ # 跳过文件名参数 # 不把 -o 和文件名加入 $newArgs } else { $newArgs += $arg } } # 构建传给 g++.exe 的参数 if (-not $userSpecifiedOut) { # 用户未写 -o,自动添加 -o main.exe $finalArgs = @("-o", "main.exe") + $newArgs } else { # 用户已写 -o,保留原样 $finalArgs = @("-o", $outName) + $newArgs } # 执行编译(启用 C++11) g++.exe -std=c++11 @finalArgs # 若编译成功,运行生成的程序 if ($LASTEXITCODE -eq 0) { Write-Host "`n编译成功,正在运行..." -ForegroundColor Green if ($userSpecifiedOut) { # 自动添加 .exe 后缀(如果用户指定的输出名不含 .exe) $runExe = if ($outName -match '\.exe$') { $outName } else { "$outName.exe" } & ".\$runExe" } else { # 默认输出 main.exe 位于当前目录 & ".\main.exe" } } else { Write-Host "`n编译出错,程序未运行" -ForegroundColor Red } }

现在我们执行g++指令就可以直接编译并运行了

g++ .\C++_UTF8.cpp

记得重启终端

具体什么原理,大家可以复制给AI让AI给你解读
(本来我也是让AI写的)

这个PowerShell配置文件是对所有终端生效的,哪怕不开启IDE,直接在终端中也可以使用我们设置的这些特性
完整配置代码:

# 本文件现在用 UTF-8 with BOM 编码 # 自定义提示符格式 function prompt { # 显示当前路径,然后换行,再显示 > 符号 "$(Get-Location)`n> " } # 开机默认UTF8编码,永久设置控制台代码页UTF8 chcp 65001 | Out-Null # 同步PowerShell管道输出编码,解决C++程序中文乱码 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # 一键切UTF8 function Set-UTF8 { chcp 65001 | Out-Null $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 Write-Host "已切换终端编码:UTF-8 (65001)" -ForegroundColor Cyan } # 一键切GBK function Set-GBK { chcp 936 | Out-Null $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::Default Write-Host "已切换终端编码:GBK (936)" -ForegroundColor Yellow } function g++ { # ========== 新增:快速透传判断(非编译运行场景直接调用原生g++) ========== $passThroughArgs = @('--version', '--help', '-v', '-c', '-E', '-S', '-MM', '-M') $shouldPassThrough = $false foreach ($arg in $args) { if ($passThroughArgs -contains $arg) { $shouldPassThrough = $true break } } # 命中透传规则:原封不动调用原生g++.exe,直接返回 if ($shouldPassThrough) { g++.exe @args return } # ========================================================================== $outName = "main" $userSpecifiedOut = $false $newArgs = @() # 解析参数,找出用户是否指定了 -o for ($i = 0; $i -lt $args.Count; $i++) { $arg = $args[$i] if ($arg -eq "-o" -and $i+1 -lt $args.Count) { $outName = $args[$i+1] $userSpecifiedOut = $true $i++ # 跳过文件名参数 # 不把 -o 和文件名加入 $newArgs } else { $newArgs += $arg } } # 构建传给 g++.exe 的参数 if (-not $userSpecifiedOut) { # 用户未写 -o,自动添加 -o main.exe $finalArgs = @("-o", "main.exe") + $newArgs } else { # 用户已写 -o,保留原样 $finalArgs = @("-o", $outName) + $newArgs } # 执行编译(启用 C++11) g++.exe -std=c++11 @finalArgs # 若编译成功,运行生成的程序 if ($LASTEXITCODE -eq 0) { Write-Host "`n编译成功,正在运行..." -ForegroundColor Green if ($userSpecifiedOut) { # 自动添加 .exe 后缀(如果用户指定的输出名不含 .exe) $runExe = if ($outName -match '\.exe$') { $outName } else { "$outName.exe" } & ".\$runExe" } else { # 默认输出 main.exe 位于当前目录 & ".\main.exe" } } else { Write-Host "`n编译出错,程序未运行" -ForegroundColor Red } }

5. Dev C++的GBK格式

由于Dev C++读取和保存代码的格式就是GBK(因为我们是中文系统)
所以你其它编辑器写的代码(UTF8格式)用Dev C++打开,中文部分都是乱码
输出结果自然也是乱码

那如果有些时候想用Dev C++练习怎么办
可以用Dev C++新建一个文件,保存的时候在文件名中添加GBK后缀
显示的告诉自己,这个文件是GBK格式

Zed能正常读取GBK格式的源代码

如果想在Zed中用终端运行代码,只要先Set-GBK,然后再用g++命令编译并运行即可


6. 使用 TRAE 转换文件编码格式

TRAE有很多很好用的功能,大家可以自己摸索
我在这里介绍一个
TRAE 默认打开文件的格式是UTF8

我们可以点击右下角的编码格式UTF-8
选择通过编码重新打开,可以选择GBK格式打开
现在就显示正常了

如果我们相把这个文件改变为UTF8格式编码
可以再点击右下角的编码格式,点击通过编码保存
TRAE 会重新写入文件,用新的编码格式保存

这样可以很方便的切换文件的编码格式,不用每次都另存为

相关新闻

  • 2026 合肥正规名表回收商家完整名单(上门 + 到店均可) - 企业推荐官【官方】
  • 逆向实战:从零破解网易云音乐评论接口加密参数
  • 2026 年 6 月最新|自动涂胶系统 / 涂胶供料系统 / 涂胶计量系统 / 涂胶分配系统厂家实测排名 权威榜单推荐 - 商业新知

最新新闻

  • 2026成都黄金回收价格对比:收的顶同城高价回收实测 - 奢侈品回收评测
  • 2026年6月最新雅典中国官方售后电话地址及客户服务网点查询 - 亨得利官方服务中心
  • 上海非法吸收公众存款罪律师推荐|非吸、企业融资、团队涉案辩护 - 法律资讯
  • 终极指南:OpenTelemetry Go SDK配置热更新7个实用技巧
  • 深入解析MC145574 GCI接口:从协议原理到嵌入式驱动实战
  • 2026武汉离婚律师第三方测评:高净值人群婚姻纠纷破局指南 - 资讯速览

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号