编辑器,编译器,文件IDE等常见概念辨析

时间:2024-03-08 22:27:53

一、编辑器与编译器有什么区别?有什么好用的编辑器?

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

编译器:编译器是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,后者往往是以二进制的形式被称为目标代码(object code)。这个转换的过程通常的目的是生成可执行的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译(compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。

好用的编辑器:Vim、NodePad++、ATOM、GNU Emacs、EditPuls编辑器、Windows记事本等等。

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

 

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

源代码文件包含程序员使用的任何编程语言编写的代码。

 

目标代码文件包含机器语言代码,它不必是完整的代码。

 

可执行文件包含组成可执行程序的完整机器语言代码。

 

可执行文件:可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。

在windows操作系统下,可执行程序可以是 .exe文件 .sys文件 .com等类型文件。
xxx.sln:sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。
包含了较为通用的信息,包括解决方案所包含项目的列表,解决方案内任何项的位置以及解决方案的生成配置。
此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合。
项目文件:一个解决方案会有一个大文件夹,里面有一个解决方案文件(.sln),还可以包含若干个项目,每个项目单独一个文件夹,里面包含了这个项目的全部文件,项目文件夹所在位置的Dubug/Release,存放的专是日志文件。不管在同一个解决方案下有多少个项目,所有的项目生成的exe文件都在解决方案目录下的Debug/Release下。
文本文件:
文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。
特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。 

三、IDE与编辑器、编译器、调试器等有什么关系?举几个你常用的IDE。

IDE 就是 集成开发环境的英文缩写

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。

那么简单来讲,IDE就能使我们提升开发效率,比如智能提示,在导入包时自动生成一些代码。

常用的IDE:Visual Studio 2019、Dev C++等等。

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

1、原理:将源代码文件转为可执行文件,执行可执行文件。

2、步骤:开始执行(不调试),启动目标文件,但不附加调试器。一般会单独出现一个运行结果界面。

3、执行命令:g++/gcc。

4、使用了g++和gcc命令。

五、g++、gcc这两个命令有啥区别?

 

误区一:gcc只能编译C代码,g++只能编译c++代码

 

俩个都可以
后缀为.c的,gcc把它当作是C程序,而g++当作是C++程序;后缀为.cpp的,俩个都会认为是C++程序
编译阶段 g++会调用gcc,对于c++代码,二者是等价的。但是因为gcc命令不能自动和C++程序使用的库链接,所以通常用g++完成链接。
误区二:gcc不会定义__cplusplus宏,而g++会

 

实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所诉,如果后缀为.c并且采用gcc编译器,则该宏就是未定义的。否则就是已定义的。
误区三:编译只能用gcc,链接只能用g++

 

编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++.因为gcc命令不能自动和C++程序使用的库链接。g++会自动调用gcc二者等价。
误区四:extern "C" 与 gcc/g++有关系

 

实际上并没有关系,无论是gcc还是g++,用extern  "C" 时,都是以C的命名方式来为symbol命名,否则都是c++方式命名。

 

实际上

 

g++ == gcc -xc++ -lstdc++ -shared-libgc

g++和gcc链接:https://blog.csdn.net/u013457167/article/details/80222557?ops_request_misc=&request_id=&biz_id=102&utm_source=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1