c语言在线编译器问题,我用的是visual 2010 版,c语言在线编译器文件中有.c吗?下图中好像是编译器的问题,怎么改呢

用Microsoft Visual Studio 2010 的cpp文件可以编写C语言程序吗?可以实现C的高效吗
按票数排序
恕我浅薄。个人不喜欢C++,所以对C++只懂一丢丢而已。在Visual Studio下是可以编写纯C程序的,如何实现可参见
。关于是否高效:我认为如果使用.net framework 的CLR(Common Language Runtime)的话,编译生成基于.net平台的CIL(即下图中的MSIL),然后编译成具体机器的字节码。参见下图.Net Framework的编译运行过程。这个过程,我不认为 会比直接使用原c编译器来的高效。当然可以设置是否使用CLR(抱歉我也是刚刚才知道的,我几乎不怎么使用VS写C++),具体可以右键点击 工程 - Property,找到下图中的选项。((我刚刚截的图,忽略其他,请勿人肉-。-)如果使用No Common Language Runtime Support话,则不使用CLR。至于其他选项请参见
。这个过程,我和@李洋的观点一样,应该是性能相同,只不过标在撰写的过程中要注意语法规范,因为c++和标准c的语法多少有些不同。更多的,排除一切外在因素,想要实现高效,我认为可以从自身撰写的编程着手,提高自己的编程技巧,这才是根本出路。刚刚发现的这个网站似乎不错的样子。Visual C++ .Net Programming Tutorials:
@陈良乔 是我浅薄了,忘记了Native C++的存在。其他的,等我中午回去翻翻.Net的书再说吧。收获匪浅。:) 如果使用托管代码的话,即Managed C++,使用CLR,才会编译成CIL。关于Managed C++的问题,其实就是Managed和Unmanaged,即托管与非托管代码的问题。所谓是否托管,就是指这个代码是否是针对于具体平台的,如果是针对平台那么就是托管,反之就是非托管。参见
specific definition, "Managed" refers to that it is run in, or managed by, the .NET virtual machine that functions as a sandbox for enhanced security in the form of more runtime checks, such as buffer overrun checks. Additionally, applications written in Managed C++ compile to MSIL - Microsoft Intermediate Language - and not directly to native CPU instructions like regular C++ applications do.关于MSIL/CIL等问题,In general, Common Intermediate Language (CIL) is the lowest-level human-readable programming language in the Common Language Infrastructure and in the .NET Framework. Languages which target the .NET Framework for example, compile to CIL, which is assembled into bytecode. CIL resembles an object oriented assembly language, and is entirely stack-based. It is executed by a virtual machine. The primary .NET languages are C#, Visual Basic .NET and Managed C++. CIL was originally known as Microsoft Intermediate Language (MSIL). Due to standardization of C#and the Common Language Infrastructure, the bytecode is now officially known as CIL. CIL is still often referred to as MSIL, however, and has been backronymed to mean Machine Symbolic Intermediate Language. This is especially true of longtime veterans of the .NET languages (Microsoft changed to Machine). ------------写是肯定能写的,但是由于.net framework的存在,在编译的时候,.net会先将代码编译成中间语言CIL(
),然后再编译成机器代码。所以肯定不如原c编译器来的高效直接。建议使用gcc进行编译。初学者可以使用dev-c++,一个还算不错的IDE。
因为C++的兼容性,所以可以编写C语言程序,但是如果是纯C程序的话,还是推荐用.c扩展名。(貌似VC编译C和C++用的同一个编译器,而不像GCC一样用的不同的编译器,所以应该性能相同)
,.net会先将代码编译成中间语言CIL会有这回事?
可以编写c,但能不能实现c的高效就不知道了
谁给你说C++比C慢了?只要不使用C++的高级特性,C++的效率和C是一样的。推荐个好用的c语言编译器我是C语言初学者
推荐个好用的c语言编译器我是C语言初学者
推荐个好用的c语言编译器我是C语言初学者,看了好多推荐但还是不知道哪个编译器好用。
我有VC6.0你要可以发给你C语言C++D都可以用的 给我你的邮箱
的感言:谢谢你了
其他回答 (9)
如果是学习C语言开发或者C++,推荐使用VC。
turboc就可以了&& 也就几MB大小
Turbo C是DOS界面的(用它写windows窗口程序mfc很麻烦) 初学者用这很头疼而且不能用鼠标,用微软的 Visual C++吧& 虽然是C++编辑器& 但是对C语言完全兼容的,用VC++6.0&& 微软公司开发& 对自己的系统了如指掌 写出的程序可植性很好!
我不同意上面人说的,我推荐Win-TC,这个不用记头文件,且变量名可以达到8位,非常方便
下载地址(迅雷专用):
我不同意上面两人的说法。Tc可以说是较老的了,而且它出现时写C是用C90标准的,并且允许不加部分头文件,而且用起来也很不方便。winTC用的是tc的内核,虽然有了界面,支持复制粘贴等操作,但它的允许不加部分头文件不是方便,却可能成为影响你的原因。你第一次打开时它也说写代码要注意标准的写法。但不加头文件表明你写的代码在这个编译器可以编译,但转到别的编译器就不行了。而你如果习惯了的话,以后写一些软件,用到其它的编译器时,它提示错误你还不知道哪里错。事实上,以前谭浩强的书第二版就使很多人都犯了这样的错误,许多人都按书上的代码,在TC2.0可以运行,但到其它的如VC++等,那些代码都不能用了。而且winTc都没有调试的功能。当你写上百行的代码时,像指针的一引动错误或数组越界,或数值溢出,没有调试功能查看变量的话,想找出错误是很难的,而这些错误,编译器是不报的。
推荐的软件有dev-C++用的是linux的Gcc内核, devcpp-4.9.9.2.rar
codeblocks-8.02mingw-setup.exe
还有VC++,不过它很大块。
当然c-Free的调试功能也很好用的。
一开始学建议用CFREE,如果上手了就用VS2008.
如果满意回答,请采纳,谢谢
我最近也在学习C语言,即将学习C++,我推荐你使用VC6.0。
要学好C,我只推荐GCC!
你可以很清楚的看到自己的程序是怎么从文本格式的源文件变成二进制格式的可执行文件的!很有助于你理解什么才是程序!
tubor c++,
相关知识等待您来回答
编程领域专家文档分类:
在线文档经过高度压缩,下载原文更清晰。
淘豆网网友近日为您收集整理了关于C语言编译器前端的设计与实现--实训报告的文档,希望对您的工作和学习有所帮助。以下是文档介绍:C语言编译器前端的设计与实现--实训报告 ...计算机与信息工程学院软硬件专业综合课程设计总结报告题目: C 语言编译器前端的设计与实现姓名:学号:专业: 计算机科学与技术指导教师:起止日期: 12.11.26—13.01.20...计算机与信息工程学院软硬件专业综合课程设计任务书实践题目C 语言编译器前端的设计与实现学生姓名班级学号指导教师职称实践地点计算机基础实验室实践日期 2012 年 11 月 26 日起至 2013 年 1 月 20 日选题的目的:编译器前端是制作一个编译器最为关键性的一个步骤,设计一个优秀的前端,直接影响到后期编译器的实现效率。编译器前端具有多样化,实现的方法较多,如何选择更优秀的方法来设计,让许多人一直不懈的研究下去。并且编译器前端的设计能与自然语言处理相互印证,是一个值得思考的领域。技术要求:1、熟练掌握一门语言,熟练掌握 C 语言语法使用,以及各种语法结构2、良好的算法数据结构基础,对常见的数据结构模型能够实现3、对编译原理知识有良好的基础,对于各种常见文法做到心中有数4、熟练使用 VS2005 开发工具进度安排:2012 年 11 月 26 日——2012 年 12 月 09 日可行性研究、需求分析2012 年 12 月 10 日——2012 年 12 月 23 日总体设计2012 年 12 月 24 日——2013 年 01 月 06 日详细设计2013 年 01 月 07 日——2013 年 01 月 13 日系统调试、测试2013 年 01 月 14 日——2013 年 01 月 18 日撰写实训报告2013 年 01 月 19 日——2013 年 01 月 20 日验收主要参考资料:[1] 钱焕延.编译技术第 2 版[M].南京:东南大学出版社出版,2002。[2] 康慕宁.编译原理[M].西安:西北工业大学出版社出版,2003。[3] 贺世娟,陈冀川.Visual studio 2005 程序设计[M].北京:中国水利水电出版社出版,2008.8。[4] 杨克玉.Visual studio 2005 程序设计实训教程[M].北京:***出版社出版,2009.2。教师签名:年月日...C 语言编译器前端的设计与实现摘要:编译器是程序员使用的关键工具,程序员每天都在使用编译器,并且非常依赖于其正确性和可靠性。编译器作为广大IT从业者必须接触的系统软件,它的设计本身又是一个极其庞大的工程。编译器相关的各项技术经过近几十年的发展,已经日臻成熟,然而编译器构造原理和技术依然是计算机科学中理论与实践相结合的最好典范。本文首先介绍了 C 语言及 C 语言编译器的发展历程,其次对本次开发所用到的工具 Visual Studio C++2005 以及面向对象的程序设计方法做一下简单介绍。最后重点介绍了编译器前端的详细开发过程,分为三个部分分别阐述:词法分析器的设计,语法分析器的设计,语义分析部分。每个部分又分别从总体框架,详细流程,重点数据结构和函数,以及与其他部分的接口等方面予以阐述。由于 C 语言本身的复杂性,很难面面俱到实现所有标准定义,所以本次设计只象征性的选择部分具有代表性的功能。在本文的第四章详细给出了此次设计所实现的功能和语法规范,同时也给出了编译器的运行方式。关键词:编译器前端、C 源程序、面向对象程序设计方法、VC++...目录摘要.............................................................................................................................................. I第 1 章绪论................................................................................................................................11.1 C 语言及编译器概述....................................................................................................11.2 C 编译器设计思想........................................................................................................11.3 开发工具的选用及介绍...............................................................................................21.4 论文组织结构...............................................................................................................3第 2 章 C 语言词法分析器总体分析与设计.............................................................................42.1 系统设计目标与功能分析...........................................................................................42.2 词法分析.......................................................................................................................42.3 语法分析.......................................................................................................................42.3.1 自顶向下的语法分析.........................................................................................52.3.2 自底向上的语法分析.........................................................................................52.4 语义分析.......................................................................................................................62.5 符号表...........................................................................................................................62.6 类型检查.......................................................................................................................7第 3 章系统详细设计................................................................................................................83.1 系统设计基本思路.......................................................................................................83.2 词法分析模块设计.......................................................................................................83.3 语法分析模块设计.....................................................................................................113.4 语义分析模块设计.....................................................................................................14第 4 章结束语..........................................................................................................................16参考文献....................................................................................................................................16附录:附录 1:词法分析核心代码............................................................................................17附录 2:语法分析核心代码............................................................................................18...第 1 章绪论1.1 C 语言及编译器概述C 语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了 C 语言。同时由 B.W.Kernighan 和 D.M.Ritchit 合著了著名的“THE C PROGRAMMINGLANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准 C 语言,后来由美国国家标准学会在此基础上制定了一个 C 语言标准,于一九八三年发表。通常称之为 ANSI C。C 语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C 语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于 C 语言实现了对硬件的编程操作,因此 C 语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的 C 语言。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。然而,也存在从低阶语言到高阶语言的编译器,这类编译器中用来从由高阶语言生成的低阶语言代码重新生成高阶语言代码的又被叫做反编译器。也有从一种高阶语言生成另一种高阶语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。1.2 C 编译器前端设计思想一个编译器的前端设计主要工作过程可以概括为以下几个步骤:(1)词法分析词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。(2)语法分析语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。...(3)语义分析语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。本系统的设计主要是实现了其中的词法分析、语法分析和语义分析三个部分。1.3 开发工具的选用及介绍软件环境使用 Windows2000/XP 操作系统,用 Visual C++ .NET 为开发平台,在开发此软件时用的是 VC++中的 MFC 框架。Visual C++.NET2005 是微软公司推出的开发 Win32 应用程序( Windows95/98/2000/XP/NT)的面向对象的可视化集成工具。从原来的 Visual C++6.0/ VisualC++.Net 2005 升级而来,它的最大优点就是提供了功能强大的 MFC 类库,MFC 是一个很大的 C++类层次结构,其中封装了大量的类及其函数,很多 Windows 程序所共有的标准内容可以由 MFC 的类来提供,MFC 类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。当然还有 Visual 2008和最新的 Visual 2010beta 版也已经发布。Visual Studio 2005 的成功已被证实,即开发人员偏爱一个具备对他们需要的工具提供接口的集成开发环境。下面主要介绍它的有点。通过将开发人员在开发环境中需要的测试和性能工具(例如,单元测试、代码分析和性能分析)合并在一起,Visual Studio 2005Team System 也期待着这种成功。这使开发人员能够在生命周期的较早阶段就改善其代码的质量,而无需中断他们的工作。通过尽早地为开发人员提供他们需要用于识别和解决质量问题的工具,更多的产品缺陷就能够在它们还未构成危害之前即被发现并解决。 VisualStudio 2005 Team System,那么过程就不仅仅是文档了。它还能将自己体现为实际的工具行为更改。当您在项目初期选择过程时,还需要选择工作流和工作产品,它们会驱动系统的行为方式。对 SDLC 过程的支持是内置的,这使得对工作流的支持是无缝的。通过将过程集成到团队成员日常使用的基本工具中,Visual Studio 2005 Team System 大大消除了过程采纳的障碍,并使自动收集跨职能的项目标准成为可能,而无需实施人工报告的相关开销。通过使用一个公共的跨工具集的数据仓库,Visual Studio 2005 Team System 解决了在大多数 SDLC 工具中建立数据仓库这一问题,并启动了一个聚合的项目状态视图。团队根据能够收集到的规则来管理项目。今天,数据主要限于缺陷跟踪。Visual Studio TeamSystem 中集成的数据将开创一条新路—通过平衡利用贯穿于 SDLC 的大量、多样的数据来管理项目规则。Visual Studio 2005 Team System 会收集精确的数据—不仅限于缺陷跟踪,而是包括测试结果、代码涵盖、代码生成、任务进度等这些贯穿于团队常规工作流程的数据。该数据以某些标准的报告方式呈现,客户和 Microsoft 内部团队已在报告中建...立了成功项目管理的关键规则。此外,团队还能够创建自定义报告。仅当以项目的大范围上下文查看数据时,团队才能够精确地报告项目状态。1.4 论文组织结构第 1 章绪论简述了 C 语言的发展以及一般编译器的工作原理,并介绍了本系统开发的主要平台和工具及其特点。第 2 章 C 语言词法分析器的总体分析与设计简单的介绍了系统的设计目标及系统要实现的功能。简单的介绍了几个要实现的编译步骤的概念和要完成的任务。第 3 章系统的详细设计介绍了系统的基本流程,各个模块的设计思想和核心代码部分。...第 2 章 C 语言词法分析器的总体分析与设计2.1 系统设计目标与功能分析本系统的设计目标是完成一个小型的 C 语言编译器的前端设计,由于要完成一个完美的C 语言编译器前端是一件非常复杂的事情,不仅要考虑到 C 语言代码的各种灵活用法,还需要能灵活运用 C 语言语法,甚至是了解语法的构成原理。本系统只完成整个编译过程中的词法分析、语法分析、语义分析以及其中的建立符号表和类型检查几个步骤。下面分别概括介绍编译过程中的这几个阶段。2.2 词法分析词法分析程序又称扫描器,它是编译过程的第一个阶段。其主要任务是从左到右依次描描字符串形式的源程序的各个字符,逐个识别出其中的单词,并将其转换成为内部编码形式的单词符号串输出,用于进行语法分析。通常可采用二元式(CLASS,VALUE)来表示一个单词符号的内部编码,其中 CLASS 为一整数码,用于表示该单词的类别;VALUE 则是单词之值(如变量名在符号表中的序号,常数的二进制表示,以及运算符和分隔符的编码,等等)。概括的说,扫描器在其工作过程中,一般应完成下列的任务:(1)识别出源程序中的各个单词符号,并将其转换成内部编码形式;(2)删除无用的空白字符、回车字符以及其他非实质性字符;(3)删除注释;(4)进行词法检查,报告所发现的错误。此外,视编译工作流程的组织,一些编译程序在进行词法分析时,还要完成将所识别出的标志符登录到符号表的工作。从功能上看,词法分析上把字符串形式的源程序转换为单词串形式,然后进行语法分析。从工作方式上看,他与语法分析之间存在两种接口方式。一种方式是将词法分析的输出结果存放在一个中间文件上,后面的语法分析程序将它作为输入进行语法分析。另一种方式是将词法分析编成一个子程序,该子程序由语法分析程序调用,当语法分析程序需要一个新的单词时,就调用该子程序,每调用一次,则从源程序字符串中读出一个具有独立意义的单词。本设计采用前一种方式。2.3 语法分析语法分析程序又称分析器,它以单词串形式的源程序作为输入或分析的对象,其基本任务是:根据程序设计语言的语法规则(即定义该语言的前后无关文法),分析源程序的语法结构,即分析如何由这些单词组成该源程序的各种语法成分(如下标变量、函数、各种...表达式、各种程序语句等),并在分析过程中进行语法正确性检查,产生内部形式的中间代码,供编译程序后续阶段处理。目前,已存在多种语法分析方面的方法,但就产生语法树的方向而言,可大致把它们分为自顶向下分析和自底向上分析两大类。2.3.1 自顶向下的语法分析所谓自顶向下的语法分析,只指对于给定输入串 w,试图为其构造一个从文法开始符号S 到 w 的最左推导 S=&w,或为 w 自上而下地构造一棵 S 为根结点的语法树。如果这一尝试得到成功,则证明 w 是相应文法的一个句子;反之,则不是。在进行自顶向下的语法分析时,通常有两个障碍须加以解决:(1) 由于采取了最左推导,故当相应文法 G 中含有左递归的非终结符号时,便会使语法分析过程陷入循环不已的状况。(2) 采用最左推导以实现对符号串 w 的匹配,实际上是一个用文法产生式的诸候选式反复进行试探的过程,这势必会出现大量的回溯,从而导致语法分析效率的大幅度下降。因此,欲实现自顶向下的语法分析,其首要任务是改造程序设计语言的文法,使得文法无左递归且无左公因子,以消除其中的左递归和避免回溯的出现。2.3.2 自底向上的语法分析所谓自底向上的语法分析,是指从给定的输入串 w=a1a2…an 出发,试图利用相应文法中的产生式,逐步将其归约为文法的开始符号 S,即从叶结点 a1,a2,…,an 出发,试图逐步向上构造一个语法树,而其根结点恰好为 S0 由于上述分析过程通常采用的是最左归约,所以实现此种语法分析的关键,是在分析的每一步,如何寻找或确定当前句型的句柄,以及确定将其归约为什么非终结符号。和自顶向下的分析过程一样,实现自底向上的分析,通常也须使用一个分析栈来存放分析过程中所得的文法符号。分析开始时,在栈底放置一个界符#,然后将输入符号逐个推入栈内,一旦在分析栈的栈顶出现句柄,就用相应的产生式的左部去替换这个句柄,即进行一次归约。由于归约,便得到了新的栈顶,此时再查看栈的顶部是否形成新的句柄:若是,再进行归约;反之,则继续将后续的输入符号移入栈内,并重复上述过程。若最终能将全部输入符号(不包括右界符#)移掉,且分析栈中只留下栈底符号#及最后一步归约所得的文法开始符号,则表明对输入串的分析已经成功。但若全部输入符号已被移掉,而分析栈却不能出现上述格局,则表明输入符号串不是文法的一个句子,其中必定存在语法错误。通常将上述过程称为“移进-归约”分析,它是最基本的自底向上分析过程。在此基础上,根据寻找句柄策略的不同,便形成了不同的自底向上的语法分析方法。...2.4 语义分析在完成了上述过程后编译程序将源程序变成一种内部表示形式,这种内部表示形式就叫做中间代码或中间语言,它是一种结构简单、含义明确的记号系统。有些快速编译程序几乎没有中间代码,但是为了使目标代码的优化比较容易实现,独立于机器进行,许多编译程序都采用了某种复杂性程度介于源程序语言和机器语言之间的中间语言。但是,想对于词法分析和语法分析都已有相当成熟的理论和算法,中间代码目前还没有一种公认的形式系统,比较接近形式化的方法是语法制导翻译。2.5 符号表符号表的信息栏中登记了每个名字的有关性质,如类型(整、实或布尔等)、种属(简单变量、数组、过程等)、大小(长度,即所需的存储单元字数)以及相对数(指分配给该名宇的存储单元的相对地址)。不同的程序语言对于名字性质的定义各有不同。现今多数程序语言中的名字或者是用说明语句规定其性质,或者采用某种隐含约定(如 FORTRAN 中凡以字符 I,J,…N 开头的标识符代表整型变量名)。有些程序语言,如 ADL 没有说明语句也没有隐含约定,因此,符号表的性质须到目标程序运行时才能确定下来。但编译时登记在符号表中的各名字的性质只能来自说明语句(包括隐含约定和标号定义)或其它引用情形。对于变量名、数组名和过程名而言,它们的信息栏中一般要求有下列信息:变量类型(整、实、双实、布尔、字符、复、标号或指针等);种属(简单变量、数组或记录结构等);长度(所需的存储单元数);相对数(存储单元相对地址);若为数组,则记录其内情向量;若为记录结构,则把它与其分量按某种形式联系起来;形式参数标志;MON 或 EQUVALENCE 语句中(FORTRAN 语言),把它和有关名字连接在一起;它的说明是否已处理过(即标志位“定义否”);是否对这个变量进行过赋值(包括出现在输人名表中)的标志位。过程是否为程序的外部过程?若为函数,类型是什么?其说明是否处理过?是否递归?形式参数是些什么?为了与实参进行比较,必须把它们的种属、类型信息同过程名联系在一起。对于那些只使用单一符号表的简单语言,对符号表填入新项的工作可由词法分析程序播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表C语言编译器前端的设计与实现--实训报告.doc
文档介绍:
C语言编译器前端的设计与实现--实训报告 ...计算机与信息工程学院软硬件专业综合课程设计总结报告题目: C 语言编译器前端的设计与实现姓名:学号:专业: 计算机科学与技术指导教师:起止日期: 12.11.26—13.01.20...计算机与信息工程学院软硬件专业综合课程设计任务书实践题目C 语言编译器前端的设计与实现学生姓名班级学号指导...
内容来自淘豆网转载请标明出处.
浏览:10次

我要回帖

更多关于 c语言编译器下载 的文章

 

随机推荐