一、编辑器与编译器有什么区别?有什么好用的编辑器?
区别
首先是编译器的概念,百度百科上是这样写的:
简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。
编辑器的概念:
文本编辑器(或称文字编辑器)是用作编写普通文字的应用软件,它与文档编辑器(或称文字处理器)不同之处在于它并非用作桌面排版(例如文档格式处理),它常用来编写程序的源代码。
编译器本质上是一个指令,要与编辑器的概念区别开来。常用的编译器是将用高级语言编写的代码翻译成低级语言代码。对于一门编程语言,可以用任何一个文字编辑软件编辑,代码编辑软件多了很多功能,比如对于特定语言可以语法高亮,本质上代码都是一个不同格式的纯文本(例如:C语言的.c,Java语言的.java)。编译之后才能够成为目标程序(即相对低级的语言,机器可以直接识别的语言。
总之,编译器与编辑器的区别:简单说编辑器是用来写代码的,而编译器是对现场高级语言代码翻译成相对低级语言的一段小程序/指令。
好用的编辑器:
NodePad++、 Vim、 GNU Emacs、Sublime Test、 Atom、 Windows记事本
二、源代码文件、可执行文件、“xxx.sln”、项目文件、文本文件。
源代码文件
源程序文件是是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
源代码文件包含程序员使用的任何编程语言编写的代码。
通俗来说,存放程序代码的文件,即为我们编辑代码的文件,称为源代码文件。C语言源程序文件的扩展名为“.c”或“.cpp”。源程序文件是相对目标文件和可执行文件而言的,一般是用高级语言写出来的。
可执行文件
可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。
在windows操作系统下,可执行程序可以是 .exe文件 .sys文件 .com等类型文件。
“xxx.sln”
".sln"文件是在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中,他是一个或多个.proj(项目)的集合
.sln文件包含基于文本的信息,编译环境通过这些信息找到并且加载他引用到的持久数据和VSPackages项目。当用户打开解决方案的时候编译环境通过包含在.sln文件中的preSolution,Project,postSolution信息加载解决方案,包含在解决方案中的项目以及任何和解决方案有联系的持久信息。
项目文件
项目 project,来 是一组代码的统称。这一组代码 必须实现一个完整的功能, 可以是一个完整的程序, 也可以是其中一个模块。项目的创立,就是为了更好的组织管理这些代码。对于初学者来说, 项目往往只有一个文件 几个函数。这是体现不出项目的价值。但一旦完成一个比较大的功能时,项目代码可以达到几千上万个文件。这时项目的管理就很有必要了。
文本文件
文本文件是一种由若干行字符构成的计算机文件。文本文件存在于计算机文件系统中。通常,通过在文本文件最后一行后放置文件结束标志来指明文件的结束。
文本文件是指一种容器,而纯文本是指一种内容。文本文件可以包含纯文本。
一般来说,计算机文件可以分为两类:文本文件和二进制文件。
三、IDE与编辑器、编译器、调试器等有什么关系?举几个你常用的IDE。
关系
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。
总结,IDE包括编辑器、编译器、调试器等工具。
常用IDE
Dev C++、Visual Studio 2019
四、在Visual Studio中,按一下ctrl+F5就可以“直接运行”.c或.cpp文件。原理是什么?中间经历了了什么步骤?实际上执行了什么命令?使用了g++、gcc这两个命令吗?
原理:清除缓存,重新将代码编译生成可执行文件后,在VS中开始运行该程序,且不调试
经历的步骤:
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
实际上执行的命令
执行清除缓存、编译运行命令
使用了g++、gcc这两个命令吗:使用了
五、g++、gcc这两个命令有啥区别?
1、对于不同后缀的文件当作程序不百同。
c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;对于.cpp后缀的文件,gcc和g++都会当做c++程序。
2、编译阶段调用不同,g++会调用gcc;
3、连接度阶段方式不同,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。