编译器有什么讲究
c编译器就是把你写的c语言程序转换成机器能理解及执行的代码
② 编译器是每次启动都重新编译吗还是一次性编译结束就一劳永逸循环使用编译器和解释器有什么区别
代码经过编译器编译过后,以后就不需要再编译了,但是现在好多开发系统为了实现跨平台,可能编译输出的不一定是最终可执行代码,由其他平台负责处理执行。解释器一般是程序执行时才工作,每一条指令先由解释器处理然后再执行。
③ c++编译器都有什么,怎么可以用命令行编译c++,怎样学习c++,c++和vc++的区别是什么
c++的编译器常见的有 微软的, GCC(linux下最常用的,也有windows版本,叫mingw) 和 intel的(intel有不少好东西,对性能要求高的话可以考虑)
但是集成开发环境就多了 微软的 visual studio (VC6 VC2005 VC2008)系列,也可以把intel的编译器挂到VS下面,取代微软的编译器,dev-c++ 和 codeblocks 这两个用的都是用的GCC的编译器。
windows下 ,最好不用命令行编译很麻烦的,大一点的项目还要写makefile来管理,linux下 g++ -o file file.cc 然后 ./file 就能执行刚才的程序了
学C++ 多练 多写代码 找本好的参考书 比如 c++ primer ,教材随便找本就行了 网上可以下到电子书的
c++是一门语言 而VC++通常指的是微软为了开发windows下的图形界面程序,而给出的一些API函数,以及封装了这些API函数的MFC库,它们的语法是C++的语法。C++在linux下可以照常使用,但VC++到了linux下就没法用了,因为linux下没有MFC库,当然它也有自己的一些图形库
④ 什么是编译软件常用的编译软件主要有包括那些并举出两个例子。
编译软件实际上就是实现了编译器的功能。简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) →链接器 (Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
编译软件就是用来编程的集成开发环境,编译语言不同,使用的编译软件也不同,例如C语言和C++是用VS2015或VS2012等微软集成IDE 而java则是用eclipse等编程软件进行开发。
⑤ 编译器有什么用
简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
⑥ 什么是编译器
编译器
编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。
[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。
一个现代编译器的主要工作流程如下:
* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)
工作原理
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。
预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。
编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。
编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。
编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。
常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。
上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。
机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。
⑦ C语言编译器有哪些各有什么特点
C语言编译器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。
其中比较经典的VC++,微软的产品,编译器,链接器,运行,调试等功能于一体的强大开发工具,特点是功能十分强大,对于新手来说需要一段时间去摸索。
dev-C++是windows下一款开发c/c++的开发环境,使用gcc为编译器,遵循标准,功能比较强大,语法高量,可以进行单步调试(这对排除错误很重要),进行断点设置等功能,遵循C标准,是一款很强大的开发工具。
C-Free是一款支持多种编译器的专业化C/C++集成开发环境(IDE)。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。
TC 2.0:Borland公司的产品,在dos界面下编译运行,小巧、灵活,但是不能使用鼠标。
win-TC:在tc2.0的基础上加上了界面,能够使用鼠标,具有语法高量,可以嵌入汇编等特点,对新手一些,拜托了不能用鼠标的困难。
编译器,简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。
⑧ c++各种编译器有什么不同,应该不存在哪种编译器最好的说法吧是不是只要学会用一种编译器就可以了
每种编辑器适用环境都是不一样的。对于初学者来说 如果你想学习linux gcc是一个非常不错的编辑器。。又是开源的。。其他的要依你的编程环境来确定。。标准C的程序编辑器基本都支持的。所以简单的程序选择哪一种都差不多,但是如果用到专业的函数 比如itoa 这就是windos 特有的函数了 也就是说只有VC支持
⑨ ide和编译器有什么区别,什么是ide,什么是编译器
1. IDE与硬件平台有关。不同IDE携带的编译器不同。
2. 当然有关。不是半导体厂家提供的,而是编译器开发厂商提供的,也有很多开源的编译器。
3. 有关系。目前最常见的编译器仍然只支持C/C++,C#的编译器较少而且据说仍不完善。至于Java……哈哈,这种二道贩子还需要劳烦编译器?
4. 可以集成。具体的你需要查阅相应IDE的手册,看看能够集成/添加哪些编译器。
5. 关心到架构就可以。厂商自己扩展的东西多半就是些映射,你看厂商的外设就行;而且很多厂商都提供了易于开发的库(当然他们的库也都是够烂的,用熟了以后就可以扔掉)。
6. 是否用操作系统不影响编译器,整体而言也不影响IDE;当然IDE中如果能够添加针对操作系统组件的原生支持(重点是调试方面),用起来就更方便。
⑩ 编译器和IDE的区别 如Eclipse、tasking,GNU,GCC,keil,IAR有什么区别
0, 有些IDE是支持多种编译器和多种硬件架构的
1, IDE本身跟硬件没有关系, 是自带的编译器跟平台有关,但各硬件厂家会为自己定制或开发维护一个IDE方便开发,所以给你感觉IDE跟硬件平台有关了
2, 编译器与你是什么架构的CPU是有关的,不同架构的CPU,其机器指令不一样,所以需要不同的编译器
3, 如果你的编译器功能足够强大,是可以让你所想到的任何语言所描述的程序编译成你想要指定的硬件平台上去运行,不过事实上,这种万能编译器几乎很难实现,也就是:没有
4.要看IDE是否支持配置不同的编译器,ECLIPSE应该是可以配置GCC的
5. 编译器只管到架构一层,不会管到自己私加的一些功能上,私加的功能通常是厂商自己提供BSP开发包来解决的,而不是修改编译器
6.你这个问题没有意义,比如嵌入式板上跑裸机程序或用LINUX系统,那你所用的IDE通常来讲是不同的,甚至用LINUX OS的系统上运行的程序不需要IDE,只需要GCC,而如果你硬是想在宿主机上用LINUX平台开发裸机程序,用GCC去编应该也可以,但通常你都是在WINDOWS平台用一个所谓的IDE的软件去编一个IMG,然后烧到ARM平台上。
2.1 你在编译之前,肯定会选择你是哪个内核的ARM,或者选择你是哪一款芯片。这是配置问题,并无关编译器是否不同这个级别的问题上了。你可以咨询你现在所使用芯片的官方技术支持,问他们看哪个IDE或哪款编译器支持你想要的芯片。
2.2 同样,这类问题,要不,你可以网络谷歌,要不,就问芯片厂商技术支持。