怎么用notepad编译c语言

发布时间 - 2019-08-19 00:00:00    点击率:

一. 前情

  平时用的 IDE(集成开发环境)是 Dev-Cpp,因为只是学习阶段,代码还上不了千行,个人认为不需要 VS 那种高大全,VC6.0 又有些地方(不只是审美)不顺眼。

  但最近又发现当把 C++ 代码文件复制到 Ubuntu 18.04 编译运行时,汉字部分总会乱码,因为encoding(字符编码)的问题,Ubuntu只认UTF-8,Windows只认ANSI,Ubtuntu虽然我能让VIM显示ANSI,却做不到让终端显示,而Windows 上的 Dev-Cpp 不能设置encoding为 UTF-8,所以想改用 Notepad++ 这个 Editor(编辑器)增加 Compiler (编译器)的功能。

环境:win7。Notepad++。Dev-Cpp。

推荐教程:notepad使用教程

二. 步骤

1. 配置编译器

官网下载安装MinGW

change:

  选中“mingw32-gcc-g++-bin”的“mark for installation”,选择右上角“Installation”的“Apply Changes”即可。另外几项我没安装的时候也没什么问题,后来出了点别的问题,求保险才装的。总共装了不到 400MB。

相关推荐:《Notepad++使用图文教程》

2. 编辑环境变量

  控制面板\所有控制面板项\系统,高级系统设置→环境变量,在“Administrator 的用户变量”栏找 PATH 变量,无则新建,有则编辑,变量名为“PATH”,变量值在原有的基础上增加一条“C:\MinGW\bin;”,该值与每个人把 MinGW 安装的位置有关,因人而异。“;”的意义在于当 PATH 的值有多项时,用它把这些项分开。

3. 两种方法检查前两步是否成功

  进入 cmd 控制台,输入gcc -v或g++ -v查看已加入到环境变量中的编译器版本。显示黄框中的内容属于正常,说明前两步成功。

  创建一个简单的 C++ 源代码文件,要保证代码正确能运行。例如 Hello.cpp:

//Hello.cpp
#include  
using namespace std;
int main()
{
    cout<<"Hello world, 世界你好!"<

  在 cmd 控制台 cd 到该源代码的目录,然后执行g++ Hello.cpp -o Hello.exe,然后执行Hello.exe /k命令,能正常运行也能说明前两大步没问题。

  前一条命令是用 g++ 编译器编译这个源代码并输出 exe 文件到这个目录,后一条是运行 exe 文件(/k 参数使其运行后停留在程序界面,与之相对的 /c 会使其关闭。即 keep 与 close 的对比)。前面两条命令其实可以用“&&”合为一条,即g++ Hello.cpp -o && Hello.exe Hello.exe /k。

  到这里已经成功一大半了,因为如你所见,已经可以在 cmd 控制台编译并运行源代码了,而赋予 Notepad++ 这个能力,只是让 Notepad++ 一步“对当前打开的源文件用 cmd 执行编译、运行命令”而已。

4. Notepad++ 增加运行命令

  打开 Notepad++,按 F5 调出“运行”。复制后面说到的命令,运行即可,建议保存,名称随意。

  也可以在工具栏中找“运行(R)”

  参考了多个关于 Notepad++ 运行命令和 cmd 命令的资料,经修改后我的命令是cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT(无分行,是一整条命令),要理解这条命令的话可以将其一分为六,即:

  (1)cmd /k:打开 cmd 控制台,运行完程序让其停留而不自动关闭。

  (2)pushd "$(CURRENT_DIRECTORY)":将工作路径更换到源文件所在的路径,例如'pushd E:\kkk'相当于 cmd 中先e:再cd kkk,这条命令在源代码要调用同目录文件而只写了相对路径时尤为重要。因为 Notepad++ 的默认工作路径是它自己的安装路径。

  (3)g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)":调用环境变量中的编译器 g++.exe 来将源代码编译成同名 exe 文件并输出到相同路径。

  (4)"$(NAME_PART)".exe:运行源代码编译出的可执行文件。

  (5)PAUSE:暂停,提示“按任意键继续”,配合下一条命令实现“按任意键关闭”的效果,两者都没有的话程序运行完就会秒关。

  (6)EXIT:关闭 cmd 控制台,没有的话按任意键会退到 cmd 命令台,等待输入下一条命令。

    ·$(CURRENT_DIRECTORY)代表文件所在目录的路径。

    ·$(NAME_PART)表示该文件无后缀部分的文件名。

    ·$(FULL_CURRENT_PATH)代表当前完整的文件路径。

    ·双引号(半角):用于防止目录或文件名中含空格的情况。

    ·“&&”和“&”:前者表示上一条命令正常执行完再执行下一条命令,非正常则不执行下一条;后者无顾虑。例如一分为六后的后两条子命令,表示不管源代码编译、运行是否成功,都会出现“按任意键继续”字样,并且按任意键后关闭 cmd 控制台。


# notepad  # 源代码  # 这条  # 下一条  # 使其  # 两步  # 自己的  # 只认  # 就会  # 半角  # 出了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京企业网站设计制作公司,北京铁路集团官方网站?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel如何创建自定义中间件?(Middleware代码示例)  如何撰写建站申请书?关键要点有哪些?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  北京网站制作公司哪家好一点,北京租房网站有哪些?  详解vue.js组件化开发实践  Linux后台任务运行方法_nohup与&使用技巧【技巧】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  再谈Python中的字符串与字符编码(推荐)  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Python自动化办公教程_ExcelWordPDF批量处理案例  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel如何使用Sanctum进行API认证?(SPA实战)  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何基于云服务器快速搭建个人网站?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Linux网络带宽限制_tc配置实践解析【教程】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何用VPS主机快速搭建个人网站?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  详解jQuery停止动画——stop()方法的使用  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何基于PHP生成高效IDC网络公司建站源码?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在景安服务器上快速搭建个人网站?