❶ 怎么在DOS下编译C++程序
VC6只是一个IDE,可以方便的调用编译器,链接器,头文件,库文件,如果编辑和编译驱动能集成在一起,这样可以提高开发效率。 对于普通的Win32应用程序,VC6已经默认支持了,而对于驱动程序没有设定好的工程向导。其实驱动程序也就是一个sys,是通过c语言写成,所以编译它理论上没有问题,只是在实际操作上有点麻烦。 下面就来说明一下各种平台编译sys驱动的方法(包括64位平台)。 先看32位版本驱动的编译方法,首先你得准备一些编译必备工具: 1.要安装VC6 2.安装DDK(装哪个呢?这个问题其实很简单的,只是很多人不明白,装DDK当然是越新越好了,越新支持的平台越多,像2000DDK你是绝对编译不出来64位sys的,因为它没带64位的库和编译器,所以我们选择现在最比较新的,2003DDK(WDK也可以),支持的平台很多(AMD64,IA64,2000,XP,2003都支持)。 好了,这下我们的系统已经安装了最强的开发工具VC6,最新DDK,在VC里编译各个平台的驱动都没有问题了! 开始,假设我们的DDK装在C:\2003DDK目录,那么我会发现里面有很多驱动的例子(安装的时候全选),我们选择C:\2003DDK\src\wdm\usb\bulkusb作为我们的实验范例。 第一步: 打开VC,建立一个Win32 Application工程,然后选择An empty Project(我用英文版的VC,建议你也换成英文版的),意思就是建立一个空的Win32工程,工程名字就叫bulkusb,点Finish. 第二步: 将C:\2003DDK\src\wdm\usb\bulkusb\sys(这里是驱动代码,另一个exe里是用户程序,不管它)里的所有文件拷贝到bulkusb工程目录下。然后把.h,.c,.rc 导入到VC里对应的目录里面去。 第三步: 然后就是开始设置工程选项,把这些代码编译成sys了。 要编译我们需要DDK,所以先要在vc的Tool->Options->Directories里设置一些路径给VC调用(设置基本原则:要保证下面所有设置的路径排在前面!)。 设置Include路径: C:\2003DDK\INC C:\2003DDK\INC\CRT C:\2003DDK\INC\WNET C:\2003DDK\INC\DDK\WNET C:\2003DDK\INC\DDK\WDM\WNET 要按这样的顺序添加。注意这里的WNET目录了吗?这就是2003最新头文件,其实选择wxp或者w2k目录也是可以的,只是wnet里的头文件最全,因为系统不断进步,有些新的api只有新的头文件里才有定义。当然最好是选择对应的头文件来编译对应系统的驱动,但是我试过用wnet编译的驱动在2000 下也能用,因为我们一般用不到那些新添加的 api.。 设置lib路径: C:\2003DDK\LIB C:\2003DDK\LIB\CRT\I386 C:\2003DDK\LIB\WNET\I386 //wnet道理和上面一样 设置Executable File: C:\2003DDK\BIN\X86 //这就是编译器的路径,包含cl.exe,link.exe的目录,由于我们要编译32位驱动,所以把这个添加进去,放在第一项。 总的来说,只要设置好Include,Lib和编译器,编译什么文件都没问题的,你也可以自己尝试安装最新的2003SDK,编译Win32应用程序成64位。 第四步: 开始进入工程设置,先设置C/C++,在Preprocesser definitions里输入如下字串: Release下输入: _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG Debug下输入: _X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG 在Code Generation里的Calling convention用__stdcall,(这是驱动程序必须的) Debug版有个特殊编译选项 /GZ (注意是大写的,小写的不要删!)删掉,否则有链接错误,chkesp链接不上什么的。 第五步: 开始设置Link页,将输出文件名改为sys扩展名, 在General的Object/Library moles, 填入驱动所调用到的几个lib: ntoskrnl.lib hal.lib usbd.lib wmilib.lib。 然后进入Output在Entry-point symbol: 填DriverEntry 下面就是往Project Options手动增加一些链接选项,复制如下进去: /machine:IX86 /driver /subsystem:native /SECTION:INIT,d /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 删除如下选项: /subsystem:windows /machine代表目标机器类型,/driver代表驱动,/subsystem:native 也是代表驱动。 OK,大功告成,我们可以编译32位驱动了! 那么如果我们要编译64位驱动呢? 这里大家注意一下,64位有两种,一个是AMD64,一个是IA64,要选定你的目标平台,目前AMD64平台最为流行。 其实编译成64位也很简单,只要把32位的配置稍微改一下就行了,我们以编译AMD64位驱动为例(你会复制VC的工程Configurations吧,把32位的Relase,Debug各复制一份改名为ReleaseAMD64和DebugAMD64,然后在复制品的基础上修改): 1.要修改两个lib路径: C:\2003DDK\LIB\CRT\I386改为:C:\2003DDK\LIB\CRT\amd64 C:\2003DDK\LIB\WNET\I386 改为:C:\2003DDK\lib\wnet\amd64 2.修改编译器路径: C:\2003DDK\BIN\X86 改为: C:\2003DDK\bin\win64\x86\amd64 C:\2003DDK\BIN\X86 //这句也要存在 3.修改C/C++里的Preprocesser definitions为: ReleaseAMD64下输入: _AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG DebugAMD64下输入: _AMD64_,AMD64,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG 4.需要修改link页里的Project Options,手动改一下:将/machine:IX86改为:/machine:amd64 5.理论上到这里设置就OK了,不过还是有一个链接错误unresolved external symbol __security_cookie ,只要在链接的lib里加入bufferoverflowK.lib (为什么是bufferoverflowK.lib?看这里:http://support.microsoft.com/kb/894573) 就可以了。我修改的工程范例下载:下载地址。 以上的设置大部分都可以保存在VC工程文件(*.dsp)里,除了设置的include路径,lib路径和编译器路径,这些路径是全局的,在打开另一些工程也会留下了,就会给编译应用程序带来麻烦,还需要一个一个改回去,而目录切换器就是为了快速切换这些路径而开发的。
❷ ms dos下怎么编译 运行C程序
不管是windows还是dos,都需要编译器的,dos下可以使用turbo c2.0及以上版本,进行编程和调试运行等。windows下我一般使用cfree或vc6.0
❸ 简要回答DOS,WINDOWS,LINUX三种操作系统发展历史.(参考网络)
DOS的版本 DOS在1981年推出其1.0版,功能还非常基本和薄弱;1983年推出2.0,主要增加了目录操作功能,使文件管理上了一个新台阶(目录和文件的概念我们将在讲解DOS内部命令时介绍);1984年推出3.0,主要支持1.2MB的5.25英寸高密软盘(1.X和2.X只支持低密盘)和大容量硬盘;1987推出目前普及率最高的DOS 3.3,主要支持3.5英寸软盘和网络。至此,DOS已经发展的相当成熟,尽管后续版本(目前PC-DOS的最新版本为7.0版,MS-DOS公布的最新版本为6.22)不断推出,但均无重大的内核改进,只不过增加了许多实用功能,如检测磁盘,清除病毒,硬盘增容等。DOS是Disk Operation System(磁盘操作系统) 的简称,是1985~1995年的个人电脑上使用的一种主要的操作系统。由于早期的DOS系统是由为软公司为IBM的个人电脑开发的,称为MS-DOS,因此后来其他公司生产的与MS-DOS兼容的操作系统,也延用了这个称呼,如PC-DOS、DR-DOS等等。 1981年,MS-DOS 1.0发行,作为IBM PC的操作系统进行捆绑发售,支持16k内存及160k的5寸软盘。在硬件昂贵,操作系统基本属于送硬件奉送的年代,谁也没能想到,微软公司竟会从这个不起眼的出处开始发迹。 1982年,支持双面磁盘。 1983年MS-DOS 2.0随IBM XT发布,扩展了命令,并开始支持5M硬盘。同年发布的2.25对2.0版进行了一些bug修正。 1984年,MS-DOS 3.0增加了对新的IBM AT支持,并开始对部分局域网功能提供支持。 1986年,MS-DOS 3.2 支持了720K 的5寸软盘。 1987年,MS-DOS 3.3 支持了IBM PS/2设备及1.44M的3寸软盘,并支持其他语言的字符集。 1988年,MS-DOS 4.0 增加了DOS Shell 操作环境,并且有一些其他增强功能及更新。 1991年,MS-DOS 5.0发行,增加了DOS Shell功能,增强了内存管理和宏功能。 1993年,MS-DOS 6.x 增加了很多GUI程序,如Scandisk、Defrag、Msbackup等,增加了磁盘压缩功能,增强了对Windows 的支持。 1995年,MS-DOS 7.0 增加了长文件名支持、LBA大硬盘支持。这个版本的DOS并不是独立发售的,而是在Windows 95中内嵌的。之后的MS-DOS 7.1全面支持FAT32分区、大硬盘、大内存支持等,对四位年份支持解决了千年虫问题。 WINDOWS发展简史 作为世界上最流行的操作系统,Windows可不是从一开始就是这样的。Windows的进化过程经常是不确定和不稳定的。其成功是和处理器速度、内容容量等息息相关的,微软也非常依赖第三方的软件来填补概念和消费者之间的鸿沟。 随着Vista的发售,有必要通过截屏回顾一下23年来,Windows操作系统所走过的路。 Windows 1.0 比尔·盖茨于1983年正式宣布推出Windows系统,但是微软的第一个图形用户界面操作系统Windows 1.0,却直到1985年11月才放出,此时距离苹果推出Mac已经有两年之久了。由于涉及到和苹果的版权问题,此时的Windows系统还不能拥有例如重叠窗口和回收站的功能。Windows 1.0更多的是一个MS-DOS的扩展,而不是一个单独的操作系统,不过已经能够支持有限的多任务和鼠标操作了。 Windows 2.0 盖茨很快和苹果签订了授权协议,以便在Windows中使用Macintosh GUI的某些原素。不过随后,苹果将盖茨送上了法庭,称在新推出的Windows 2.0中,有170处涉嫌抄袭。Windows 2.0提供了图标和层叠窗口的功能。 另外,Windows 2.0还得到了一些关键的程序支持。早期版本的Word和Excel使用Windows作为界面;当时流行的桌面发布程序Als PageMaker,一度只在Mac电脑上运行,同样也进驻了Windows 2.0,这对Windows来说是一个关键的事件,因为这极大的扩展了系统的实用性和市场份额。 此主题相关图片如下: Windows 3.0 这一版的Windows于1990年发布,可以说是一次彻头彻尾的改进。新的文件管理系统和增强的图形性能,终于使Windows PC变成了Mac的强劲对手,而这一过程花了六年的时间。操作系统拥有全新的外观,受保护的和增强的操作模式使得内存管理更为有效。Windows 3.0取得了巨大的成功,在两年的时间里销售了超过1000万的拷贝。开发人员开始编写大量的第三方软件,对于消费者购买来说是不小的刺激。大量的现金改变了微软的方向,使之更专注于操作系统的开发上。 Windows 3.11 主要就是Windows 3.0版的更新产品,Windows 3.11支持包括TrueType可升级字体、多媒体、对象链接和嵌入等功能。一大堆在系统从3.0之后推出的升级补丁,也都集成进3.11版之中。 此主题相关图片如下: Windows 3.11 NT 这是一个非常强大的Windows版本,是在消费版的3.11上独立开发而来的,NT是专门为商业和工程师等需要非常成熟操作系统的用户而设计的。和3.11版不一样的是,NT是专门为32位处理器编写的。不幸的是,当时只有很少的硬件能够支持。开发人员不愿意费尽去让他们的产品兼容NT,因为这非常复杂,而且这一操作系统仅仅占据了很小的市场份额。 此主题相关图片如下 Windows 95 Windows 95真正的将计算处理带到普通人的身边,让很多人从此走进了Windows和电脑的世界。由于捆绑了Internet Explorer,Windows 95成为了浏览网页的常用入口。Windows 95从此开始使用大家熟悉的开始按钮和任务栏,这种风格一直保持到今天。 Windows 95也标志了微软和向下兼容之间永无止境的斗争,从3.11开始的许多架构,当然也包括其中的设计失误,都延续到Windows 95当中。而且一些部分运行在32位模式,另一些则不,这样使得操作系统能够在过去和现在之间摇摆。很多用户都不知道这个问题,他们唯一清楚的就是系统非常的不稳定,而且总是要打升级补丁。 此主题相关图片如下:Windows 98 不仅仅是从Windows 95稳定的升级到新的系统,Win 98还支持多显示器显示,WebTV和采用新的FAT32文件系统带来的更大的文件分割。Win 98是一版将Internet Explorer集成进GUI的系统,引发了对微软垄断行为诉讼的热潮。 随后又放出了Windows 98 Second Edition,增加了网络连接共享功能。此主题相关图片如下:Windows 2000 这一版Windows推出的时间是2000年的2月,Win2K是Windows中NT系列的升级,这是第一个通过互联网进行自动升级的Windows版本。 Windows XP 2001年推出的XP将NT架构,和从95/98/ME上传承而来的用户界面,融合在一起。虽然仍然在安全性方面收到攻击,但是XP已经在很多地方获得了改善,包括文件管理、速度和稳定性。尤其是在GUI方面的明显改善,使得操作系统对于没什么经验的用户来说更为容易上手。 :Windows Vista 最后就是才推出的Vista,至于Vista会带来怎样的影响,现在还不好说。在XP六年之后推出的Vista,在GUI上游客非常明显的变化,而且还带来了很多的新特性,路走怎么,让时间来说话吧。Linux操作系统发展简史 【 原文由 glnju 所发表 】 在70年代,Unix体系的源程序大多是可以任意流传的。互联网的基础协议TCP/IP就是产 生于那个年代。在那个时期,人们在创作各自的"程序作品"中享受着从事科学探索、创新 活动所特有的那种激情和成就感。那时的程序员,如同作家一样,急于"发表"自己的程序 作品,并不专注于保守"机密",以换取钱财。 1979年,AT&T宣布了Unix的商业化计划,随之出现了各种二进制的商业Unix版本。于 是就兴起了基于二进制机读代码的"版权产业"(Copyright Instry),使软件业成为一种 版权专有式的产业,围绕程序开发的那种创新活动被局限在某些骨干企业的小圈子里,源 码程序视为核心"商业机密"。这种做法,一方面产生了大批的商业软件,极大的推动了软 件业的发展,诞生了一批软件巨人;另一方面,由于封闭式的开发模式,也阻碍了软件业 的进一步深化和提高。由此,人们为商业软件的"BUG"付出了巨大的代价。 1984年,Richard Stallman面对程序开发的封闭模式,发起了一项国际性的源代码开 放的所谓牛(GUN)计划,力图重返70年代基于源码开放从事创作的美好时光。他为保护源 代码开放的程序库不会再度受到商业性的封闭式利用,制定了一项GPL条款,称为Copylef t版权模式。 1987年6月,R..Stallman完成了11万行源代码开放的"编译器"(GNU gcc),获得了一 项重大突破,做出了极大的贡献。 1989年11月,M.Tiemann以6000美元开始创业,创造了专注于经营开放源代码"Cygnus Support"(天鹅座支持公司)源代码开放计划。(注意,Cygnus中隐含着gnu三个字母)。 Cygnus是世界上第一家也是最终获得成功的一家专营源代码程序的商业公司。Cygnus的"编 译器"是最优秀的,它的客户有许多是一流的IT企业,包括世界上最大的微处理器公司。 1991年11月,Linus Torvalds写了个小程序,取名为Linux,放在互联网上。他表达了 一个愿望,希望借此搞出一个操作系统的"内核"来。这完全是一个偶然事件。但是,在互 联网上,Linux刚一"露头",便被广大的牛羚计划的追随者们看中,全部上阵,七手八脚, 把它"加工"成了一个功能完备的操作系统,叫做CNULinux。 1995年1月,Bob Young创办了RedHat(小红帽),以CNULinux为核心,集成了400多个 源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行 版",在市场上出售。这在经营模上是一种创举。Bob Young称:我们从不想拥有自己的"版 权专有"技术,我们卖的是"方便"(给用户提供支持、服务),而不是自己的"专有技术"。 源代码开放程序包括各种品牌发行版的出现,极大的推动了Linux的普及和应用。 1998年2月,以Eric Raymond为首的一批年轻的"老牛羚骨干分子"终于认识到CNULinux体 系的产业化道路的本质,并非是什么自由哲学,而是市场竞争的驱动,创办了"Open Sour ce Intiative"(开放源代码促进会)"复兴"的大旗,在互联网世界里展开了一场历史性的 Linux产业化运动。在IBM、Interl为首的一大批国际性重型IT企业对Linux产品及其经营模 式的投资并提供全球性技术支持的大力推动下,催生了一个正在兴起的基于源代码开放模 式的Linux产业,也有人称为开放源代码(OpenSource)现象。 2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很 多用于支持 桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能 。 2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的 变化。这些变化包括:1.更好地支持大型多处理器服务器,特别是采用NUMA设计的服务器 ;2。更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;3.对鼠标和键盘指 令等用户行为反应更加迅速;4.块设备驱动程序做了彻底更新,如与硬盘和CD光驱通信的 软件模块。 这不是一场新的技术革命(程序还是那些程序),这是一次回到正确路上的充满创新 激情的"科学复兴"。 在国际范围内Linux的开发,都超越国界经由互联网进行。通常,按照一定规律,每周 发布一个Linux开发版,供全世界开发者参照。Linux开发版的序号的第二位为奇数,阶段 性发布的序号第二位为偶数。Linux的各个发行版只能均与一定的序号相对应没有序号的发 行版只能入另册。当今Linux的全部开发活动分布在各个国家,在互联网上由近100位高手 在日夜进行,总体协调人是LinusTorvalds。带有序列号的Linux发布权掌握在他手中。在 法律上,指称这组代码集的Linux注册商标的版权归Linus本人所有。 Linux体系发行版是由特定序列号的Linux(内核)及属于CNU体系源码开放的功能性支 撑模块和一些运行于Linux上的商用软件所集成。发行版整体集成版权归相应的发行商所有 。Linux发行版的发行商(称为Linux发行商)一般并不拥有其发行版中各软件模块的版权 ,发行商关注的应该只是发行版的品牌价值,以含于其中的集成版的质量和相关特色服务 进行市场竞争。严格讲来,Linux发行商并非必须一定是什么独立软件开商。它本质上属于 一种新兴的IT行业。值得注意的是,任何发行版均必须含有一个标明特定序列号的完好的 Linux稳定运行版本。在这里,版本序列号授予权属于Linus本人,代表以Linux为首的国际 性开发团队的创造性智慧的结晶。任何Linux发行商在心中一定要牢牢记住这个站在Linux 内核背后辛勤创作的开发团队。没有他们,就没有Linux。Linus与Linux开发团队永远联系 在一起。经常不断的推出Linux发行版是各国Linux发行商应尽的责任,Linux发行商的经营 活动是Linux在世界范围内的传播的主要途径之一。 Linux 发展的重要里程碑 1990年,Linus Torvalds 首次接触 MINIX 1991年,Linus Torvalds 开始在 MINIX 上编写各种驱动程序等操作系统内核组件 1991年,Linus Torvalds 公开了 Linux 内核 1993年,Linux 1.0 版发行,Linux 转向 GPL 版权协议 1994年,Linux 的第一个商业发行版 Slackware 问世???? 1996年,美国国家标准技术局的计算机系统实验室确认 Linux 版本 1.2.13(由 Ope n Linux 公司打包)符合 POSIX 标准 1999年,Linux 的简体中文发行版相继问世 2001年,Linux2.4版内核发布 2003年,Linux2.6版内核发布
❹ 汇编语言编译器的MASM编译器介绍
MASM是Microsoft公司推出的汇编编译器。它的版本从低到高经过了很多次的升级(微软的通病,升级补丁多如牛毛)。每次升级除了例行的错误修正外都增加了一些新的功能,以至于到最后高版本和低版本的语法和功能相差很多,向下兼容性也不好。低版本的MASM固然无法编译高版本的源程序,但高版本的MASM也可能无法正常编译低版本的源程序,如MASM 4.0写的源程序常常无法在MASM 6.x上编译成功。在使用MASM系列编译器时,如果不先搞清楚特定的语法和编译选项可以在哪个版本上用,编译中就会错误连篇。所以在这里有必要了解一下MASM各版本的演变过程下表列出了不同版本MASM编译器的区别。版 本简 介MASM 4.00这是最先广泛使用的一个MASM版本,适用于DOS下的汇编编程。它很精巧,但使用起来不是很智能化,需要用户自己一板一眼地写出所有的东西。很多教科书上讲的8086汇编语法都是针对这个版本的,对程序员来说。它只比用Debug方便一点点。MASM 5.00MASM 5.00比4.00在速度上快了很多,并将段定义的伪指令简化为类似 .code与.data之类的定义方式,同时增加了对80386处理器指令的支持,对4.00版本的兼容性很好MASM 5.10对程序员来说,这个版本最大的进步是增加了对@@标号的支持。这样,程序员可以不再为标号的起名花掉很多时间。另外,MASM 5.10增加了对OS/2 1.x的支持MASM 5.10B1989年推出,比上一个版本更稳定、更快,它是传统的DOS汇编编译器中最完善的版本MASM 6.001992年发布,有了很多的改进。编译器可以使用扩展内存,这样可以编译更大的文件,可执行文件名相应从Masm.exe改为Ml.exe。从这个版本开始可以在命令行上用*.asm同时编译多个源文件,源程序中数据结构的使用和命令行参数的语法也更像C的风格。最大的改进之一是开始支持 .if/.endif这样的高级语法,这样,使用复杂的条件分支时和用高级语言书写一样简单,可以做到几千行的代码中不定义一个标号;另外增加了invoke伪指令来简化带参数的子程序调用。这两个改进使汇编代码的风格越来越像C,可读性和可维护性提高了很多MASM6.00A未发售的版本MASM 6.00B最后一个支持OS/2的MASM版本,修正了上一版本中的一些错误MASM 6.10修正了一些错误,同时增加了/Sc选项,可以在产生的list文件中列出每条指令使用的时钟周期数MASM6.10A1992年发布,修正了一些内存管理方面的问题MASM 6.111993年11月发布,支持Windows NT,可以编写Win32程序,同时支持Pentium指令,但不支持MMX指令集MASM6.11C1994年发布,增加了对Windows 95 VxD的支持MASM 6.121997年8月发布,增加 .686,.686P,.MMX声明和对相应指令的支持MASM 6.131997年12月发布,增加了 .K3D声明,开始支持AMD处理器的3D指令MASM 6.14这是一个很完善的版本,它在 .XMM中增加了对Pentium III的SIMD指令集的支持,相应增加了OWORD(16字节)的变量类型MASM 6.15
❺ 求个DOS下能用的C语言编译器。。
不要在DOS下用啊,下个Win-TC,内核是TC2的,在窗口下运行,肯定可以在PE下运行。我一直用这个。网络wintc ,满地都是。
❻ windows的pc端编译器有哪些
Windows的pc端编译器有:
1) Visual Studio
Windows 下首先推荐大家使用微软开发的 Visual Studio(简称 VS),它是 Windows 下的标准 IDE,实际开发中大家也都在使用。为了适应最新的 Windows 操作系统,微软每隔一段时间(一般是一两年)就会对 VS 进行升级。VS 的不同版本以发布年份命名,例如 VS2010 是微软于 2010 年发布的,VS2017 是微软于 2017 年发布的。不过 VS 有点庞大,安装包有 2~3G,下载不方便,而且会安装很多暂时用不到的工具,安装时间在半个小时左右。对于初学者,我推荐使用 VS2015。最好不用使用 VS2017,有点坑初学者。
2) DevC++
如果你讨厌 VS 的复杂性,那么可以使用 Dev C++。Dev C++ 是一款免费开源的 C/C++ IDE,内嵌GCC编译器(Linux GCC 编译器的 Windows 移植版),是 NOI、NOIP等比赛的指定工具。Dev C++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。NOI 是National Olympiad in Informatics的缩写,译为“全国青少年信息学奥林匹克竞赛”;NOIP 是National Olympiad in informatics in Provinces的缩写,译为“全国青少年信息学奥林匹克联赛”。NOI、NOIP 都是奥林匹克竞赛的一种,参加者多为高中生,获奖者将被保送到名牌大学或者得到高考加分资格。
3) Visual C++ 6.0
Visual C++ 6.0(简称VC 6.0)是微软开发的一款经典的 IDE,很多高校都以 VC 6.0 为教学工具来讲解C和C++。但VC 6.0是1998年的产品,很古老了,在 Win7、Win8、Win10 下会有各种各样的兼容性问题,甚至根本不能运行,所以不推荐使用。VC 6.0 早就该扔进垃圾桶了,可是依然有很多大学把它作为教学工具,并且选用的教材也以 VC 6.0 为基础来讲解C语言和 C++,可见教学体制的极端落后,课程体系的更新远远跟不上技术的进步。
4) 其它 IDE
除了上面提到的三款 IDE,Windows 平台下还有很多其他的 IDE,它们各有特点,例如:
Code::Blocks 是一款开源、跨平台、免费的 C/C++ IDE,它和 Dev C++ 非常类似,小巧灵活,易于安装和卸载,不过它的界面要比 Dev C++ 复杂一些,不如 Dev C++ 来得清爽。
Turbo C 是一款古老的、DOS 年代的C语言开发工具,程序员只能使用键盘来操作 Turbo C,不能使用鼠标,所以非常不方便。但是 Turbo C 集成了一套图形库,可以在控制台程序中画图,看起来非常炫酷,所以至今仍然有人在使用。
C-Free 是一款国产的 Windows 下的C/C++ IDE,最新版本是 5.0,整个软件才 14M,非常轻巧,安装也简单,界面也比 Dev C++ 漂亮。C-Free 的缺点也是调试功能弱。可惜的是,C-Free 已经多年不更新了,组件都老了,只能在 XP、Win7 下运行,在 Win8、Win10 下可能会存在兼容性问题。
❼ c++编译器的分类
CygwinMingw32DJGPPDev-C++(Mingw32)还有正宗的GNU GCC 2.95.5~3.0.0.4版本GNU C++g++是一个开源的C++编译器,GCC3.3对标准化C++的支持达96.15%。值得一提的是,gcc是gnu c的编译器, g++是gnu c++的编译器, 而egcs(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。目前gcc已经改名,从原来代表GNU C Compiler改变为代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++编译器,以及库文件,运行环境的集合。在GCC家族中GNU GCC是根本,其它的编译器版本都是从它导出的。其中,Cygwin和Mingw32都是WIN32平台下的编译器,DJGPP是DOS下的32位编译器。大家所熟知的DEV-C++充其量只是GCC的一个外壳,它所自带的编译器就是Mingw32的一个版本。这些GCC的版本中,Cygwin是最大的,它与其说是一个编译器,倒不如说是一套编程工具。它不仅有编译器,还有其它很多的工具。其实,它就是一个UNIX系统在WIN32平台上的实现。实现了大多常用的UNIX工具,最近的版本中连Apache这样的“工具”都集成进来的。不过,Cygwin虽然功能强大,但它却不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因为太多其它的工具分散了人们的注意力。相比之下Mingw32就要好用得多,它只有最基本的几个编程工具(只可惜它不自带GDB)。GCC中并不只是C/C++编译器,其中还有很多其它的编译器如JAVA,Fortran,ADA等。它是一个编译器集合,不过有些编译器只能在UNIX系统上用。 MSC 5.0、6.0、7.0MSQC 1.0、2.5MSVC 1.0、4.2、6.0、7.0Visual C++VC++6.0对标准化C++的兼容仅达83.43%。它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的后台C++编译器。随着Stanley Lippman等编译器设计大师的加盟,它变得非常成熟可靠了。Visual C++ 7.1对标准C++的兼容性达到98.22%。 TC 1.0、2.0TC++ 1.01、3.0BC 3.0、3.1、4.0、4.5、5.0、5.02BCB 3.0、5.0、6.0Borland C++该编译以速度快、空间效率高而著称。它的5.5版本对标准化C++的支持达92.73%,而官方称100%符合ANSI/ISO的C++标准和C99标准。它是Borland公司开发的,是Borland C++ Builder和Borland C++ Builder X这两种IDE的后台编译器。 Intel C/C++ 5.0Watcom C/C++ 11.0、11.0cVectorC 1.3.3IBM VisualAge for C++DigitalMars C/C++KAI C/C++ 4.03f for RedHat 7.2Lcc4.1LCC-WIN32 2001-09-25~2002-04-28日版Small CCC386Pacific CIntel C/C++大家一看名称就知道是Intel的东西,它和VC6完全兼容,不过要挂在VC6下才能用。Watcom C/C++是早先编译器四国大战中的一员,原本是很不错的东西,可惜战略不对,现在已不见声息了。倒是以它为基础的一个OpenWatcom现在还在奋战。VectorC是我近日才发现的一个好东东,它是个纯C的编译器。IBM的VisualAge for C++原本是IBM想用来淌C++编译器这片浑水的东西,不过IBM的战略改了,它就被放弃了。DigitalMars C/C++的前身的Symantec C++(它也是编译器四国大战中的一员),不过现在Symantec不做了,于是它的作者就把它改成了DigitalMars C/C++开放给大家使用。以上这些都是WIN32平台上的东西。KAI C/C++是个很强大的C/C++编译器,它是个多平台的编译器。不过现在被INTEL收购了,已经停止开发了。Lcc4.1是个纯C的编译器它是开放源代码的。不过不怎么好用。LCC-WIN32是一个在LCC基础上开发的C语言的集成开发环境,很好用,而且有很详细的资料,FREE!Pacific C是一个纯DOS的C的集成开发环境,就不多说了。Small C CC386都是开放源代码的编译器,它们都很简单,应用来给大家学习编译器的。 QuincyEicCINTQuincy Eic CINT都是C的解释器,是用来让大家学习C语言的其中CINT的功能很强大,还支持一些C++的特性。
❽ 大家都用什么C/C++编译环境
了解的C/C++编译器如下: GCC家族有 Cygwin Mingw32 DJGPP Dev-C++(Mingw32) 还有正宗的GNU GCC 2.95.5~3.0.0.4版本 MS家族有 MSC 5.0、6.0、7.0 MSQC 1.0、2.5 MSVC 1.0、4.2、6.0、7.0 Borland家族有 TC 1.0、2.0 TC++ 1.01、3.0 BC 3.0、3.1、4.0、4.5、5.0、5.02 BCB 3.0、5.0、6.0 其它有 Intel C/C++ 5.0 Watcom C/C++ 11.0、11.0c VectorC 1.3.3 IBM VisualAge for C++ DigitalMars C/C++ KAI C/C++ 4.03f for RedHat 7.2 Lcc4.1 LCC-WIN32 2001-09-25~2002-04-28日版 Small C CC386 Pacific C 另外还有C的解释器 Quincy Eic CINT 上面提到的编译器/解释器,大部分我都使用过。现在固定使用VC7.0 Cygwin Mingw32 VectorC和LCC-WIN32这五种编译器。 在GCC家族中GNU GCC是根本,其它的编译器版本都是从它导出的。其中,Cygwin和Mingw32都是WIN32平台下的编译器,DJGPP是DOS下的32位编译器。大家所熟知的DEV-C++充其量只是GCC的一个外壳,它所自带的编译器就是Mingw32的一个版本。这些GCC的版本中,Cygwin是最大的,它与其说是一个编译器,倒不如说是一套编程工具。它不仅有编译器,还有其它很多的工具。其实,它就是一个UNIX系统在WIN32平台上的实现。实现了大多常用的UNIX工具,最近的版本中连Apache这样的“工具”都集成进来的。不过,Cygwin虽然功能强大,但它却不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因为太多其它的工具分散了人们的注意力。相比之下Mingw32就要好用得多,它只有最基本的几个编程工具(只可惜它不自带GDB)。GCC中并不只是C/C++编译器,其中还有很多其它的编译器如JAVA,Fortran,ADA等。它是一个编译器集合,不过有些编译器只能在UNIX系统上用。MS家族的编译器就不用说了,大家对它们都很熟悉。VC 7.0(VC.NET)是它的最新产品。Borland家族也不用说,大家也是耳熟能详。最近它才推出了BCB 6.0。 其它的编译器如:Intel C/C++大家一看名称就知道是Intel的东西,它和VC6完全兼容,不过要挂在VC6下才能用。Watcom C/C++是早先编译器四国大战中的一员,原本是很不错的东西,可惜战略不对,现在已不见声息了。倒是以它为基础的一个OpenWatcom现在还在奋战。VectorC是我近日才发现的一个好东东,它是个纯C的编译器。IBM的VisualAge for C++原本是IBM想用来淌C++编译器这片浑水的东西,不过IBM的战略改了,它就被放弃了。DigitalMars C/C++的前身的Symantec C++(它也是编译器四国大战中的一员),不过现在Symantec不做了,于是它的作者就把它改成了DigitalMars C/C++开放给大家使用。以上这些都是WIN32平台上的东西。KAI C/C++是个很强大的C/C++编译器,它是个多平台的编译器。不过现在被INTEL收购了,已经停止开发了。Lcc4.1是个纯C的编译器它是开放源代码的。不过不怎么好用。LCC-WIN32是一个在LCC基础上开发的C语言的集成开发环境,很好用,而且有很详细的资料,FREE!Pacific C是一个纯DOS的C的集成开发环境,就不多说了。Small C CC386都是开放源代码的编译器,它们都很简单,应用来给大家学习编译器的。Quincy Eic CINT都是C的解释器,是用来让大家学习C语言的其中CINT的功能很强大,还支持一些C++的特性。 当然还有很多其它的编译器,这里我给出的编译器都是可以在WIN32或DOS平台上用的(除KAI外)。UNIX平台上的编译器还是以GNU的为主,其它的我就不是很清楚了。 在以上的编译器中,最特别的就是VectorC这个东西只支持纯C。但它却号称是最快的编译器,不过经过我的试验,它的确在有些情况下强过其它编译器很多!而且它还有个交互式的优化器,可以让你直接看到C代码对映的汇编代码。Cygwin和Mingw32为一母所生,其运行效果相差不大。它们生成的代码效率都很不错,编译的速度也很快,最值得一提的是它们对C++的特性的支持算是所有编译器中最完全的,而且它们还支持C99的大部分特性。这一点很是不错!大家对MS的VC已经很熟悉了,本不用我多说。不过在它的最新的产品VC7.0中,有很大的改进。它对C++的特性的支持比6.0有了很大的提高,是我所用的编译器中是仅次于GCC的。而且它编译出的程序,运行速度很快!仅有少数时候次于VectorC与GCC,其它情况都是最快的!其平均运行速度是最快的。对Borland的产品我也无需多说。它的TC2.0与BC3.1都是我最喜欢的东西。可是现在的BCB却大不如前了,编译的速度和VC6一样慢!IDE还有较多的BUG。最令人想不通的是它生成的代码的运行速度很慢,比LCC-WIN32还慢!它唯一值得一提的就是它的RAD做的比MS的好。Intel的编译器大家可能不熟,它太贵了!还要有VC的支持,很不划算,而且编译速度比VC6还慢。不过它的代码质量很不错。DigitalMars C/C++没有什么亮点,编译速度较快,代码执行速度适中,对C++特性支持还算不错。LCC-WIN32是个很不错的集成开发环境,它只支持纯C。它的编译速度极快!代码执行速度较慢。不过它的最大亮点在于它的IDE,在所有的FREE编程工具中,它的IDE是最专业的,有很强大的代码分析,管理功能。而且它提供了大量的编程资料。 我曾对一些编译器的代码执行效率做过一些测试,以下是概况: 1. VectorC、VC 7.0 (极快) 2. Intel C/C++、VC 6.0、GCC (很快) 3. DigitalMars C/C++ (一般) 4. LCC-WIN32、BCB、BC5.02 (较慢) 当然,我所做的测试比较片面。不过在很大程度上已能反映其大概状况。
❾ 请教如何在python代码中获取当前编译器的版本
获得编译器的版本有以下几种方式:
代码方式:
importsysprintsys.version#2.7.3(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]printsys.version_info#sys.version_info(major=2,minor=7,micro=3,releaselevel='final',serial=0)
dos命令: