编辑器、编译器、文件、IDE等常见概念辨析 一.编辑器与编译器 二.源代码文件、可执行文件、“xxx.sln”、项目文件、文本文件 三.IDE与编辑器、编译器、调试器 四.在Visual Studio中,按一下ctrl+F5就可以“直接运行”.c或.cpp文件。原理是什么?中间经历了了什么步骤?实际上执行了什么命令?使用了g++、gcc这两个命令吗? 五.g++、gcc命令的区别:

1.编辑器:

编辑器是软体程序,一般是指用来修改电脑档案的编写软件,常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器,声音编辑器和视频编辑器等。编辑器常用来编写程序的源代码。一个好的编辑器可以节省开发时间,提高工作效率,它们都是非常方便易用的环境,你可以用它们来编写代码,查看源文件和文档等,简化你的工作。

2.编译器:

编译器就是将“一种语言”翻译为“另一种语言”的程序。一般是把较高级语言编译成低级语言,比如将高级语言(C)转换成机器语言。

编译器与编辑器的区别:

简单说编辑器是用来写代码的,而编译器是对现场高级语言代码翻译成相对低级语言的一段小程序/指令。

编辑器推荐:

GNU Emacs

Emacs是一个轻便、可扩展、免费的编辑器,它比其它的编辑器要更强大,是一个整合环境,或可称它为集成开发环境。它可以处理文字,图像,高亮语法,将代码更直观地展现给开发者。Emacs可以运行在大多数的操作系统上,而且它支持大多数常用的编程语言,可以自动对代码排版布局。Emacs用户可以根据自身的需要和偏好对编辑器进行定制。

Notepad++

Notepad++是一款免费优秀的文本编辑器,支持在Windows环境下运行的多种编程语言。Notepad++支持超过50多种编程、脚本、标记语言的语法高亮显示和代码折叠,能让用户迅速减小或扩大代码段以便查阅整个文档。用户可以手动设置当前语言,覆盖默认语言。该程序还支持自动完成某些编程语言的API子集。

二.源代码文件、可执行文件、“xxx.sln”、项目文件、文本文件

1.源代码文件:

源程序文件是是指未经编译的,按照一定的程序设计语言规范百书写的,人类可读的文本文件。通常由高级语言编写。源程序可以是以书籍或者磁带或者其他载体的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机可度执行的程序。

2.可执行文件:

可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件。

3.“xxx.sln”:

sln是解决方案文件。就是Visual Studio通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。也就是打开文件的索引,正确的引导程序员进入编程环境中。

4.项目文件:

项目 project, 是一组代码的统称。这一组代码 必须实现一个完知整的功能, 可以是一个完整的程序, 也可以是其中一个模块。项目内的创立,就是为了更好的组织管理这些代码。

5.文本文件:

文本文件是指以ASCII码方式(也称文本方式)存储的文件,其中文本文件中除了存储文件有效字符信息,不能存储其他任何信息。常见的文本文件有TXT等。

三.IDE与编辑器、编译器、调试器

IDE与编辑器、编译器、调试器的关系:

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。

常用的IDE:

Visual Studio 2019,Dev C++等

四.在Visual Studio中,按一下ctrl+F5就可以“直接运行”.c或.cpp文件。原理是什么?中间经历了了什么步骤?实际上执行了什么命令?使用了g++、gcc这两个命令吗?

原理:ctrl+F5实际上是强行刷新的命令。

步骤:预处理,生成.i的文件[预处理器cpp]一>将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]一>有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]一>连接目标代码,生成可执行程序[链接器ld]

使用了g++,gcc这两个命令。

五.g++、gcc命令的区别:

1.g++会自动链接C++标准库,比如algorith,string,vector等,g++命令不能自动和c++程序使用库连接。

2.对于不同后缀的文件当作程序不同。c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;对于.cpp后缀的文件,gcc和g++都会当做c++程序。

3.编译阶段调用不同,g++会调用gcc。