C++编程杂谈之一:编译器

2016-01-29 12:18 23 1 收藏

C++编程杂谈之一:编译器,C++编程杂谈之一:编译器

【 tulaoshi.com - C语言心得技巧 】


C++编程杂谈之一:编译器 作者/xulion     网上有很多各种编译器的优劣比较的东西,我写这些东西并不是想支持或否定某些东西,因为我始终认为在编程的领域中,我只是一个初学者,并没有资格来评判什么(况且我也不想去评判),我只是想讲述一下个人学习道路上的感受。
    学编程的一个必备的条件是你要有一个实践的平台--一个相应的编译器,没有这个条件,一切都是空谈。选择编译器之前,首先选择的是语言(这个我想不必更多的解释了),这里我假设你选择了C或C++。
    现在最流行的编译器恐怕应该是微软的VC了,在继续之前,我想再提一下一个重点:VC是一个编译器,只是一个用来把C++的代码生成为可执行文件的工具而已(当然我说的有一些简化,但是认识这一点很重要,虽然你可以在很多地方看到类似的话,但我还是要提,我希望每一个学习编程的人最好从一开始就知道它,而不是走了很多弯路以后再来醒悟)。另外一种强大的编译器就是Borland C++ Builder(后面我都将以BCB来代替)。
    如果你在使用VC,我想问一下,你为什么用它?我想很多人根本无法回答这个问题,大多无法回答的原因很明显:1)听说的,VC是最好的;2)微软的产品;3)只知道这个。当然更有甚者是一开始就把VC作为一门语言来学,呵呵,我相信一定有这样的人的!每当谈及这些问题的时候,我会觉得很多时候,软件行业中技术并不是优秀软件的全部,VC一定是最好的么?VC为什么会这么成功?我不得不佩服微软的商业策略。关于VC是如何成功的,我强烈推荐一篇文章--《C/C++圣战》,作者李维,《程序员》杂志2001.10月。
    一个编译器究竟带给我们什么?在早期,编译器其实就是一个简单的文本编辑器+库(头)文件+编译程序,很多早期的程序员会使用一些其他的编辑器来书写自己的程序,然后再使用编译器来编译。现在我们使用的编译器通常称为集成开发环境(IDE),这一类型的开发环境为我们提供了很多东西:方便的开发方式、完善的帮助系统、丰富的库和一些特有的特性。
在某个特定的平台下编程你需要关心的主要有两件事情:1.是否支持你所使用的语言;2.平台特性(WINDOWS下platform sdk为我们提供了一切)。在WINDOWS平台下,我们可以使用C++来编程,剩下的就是平台特性了。WINDOWS为我们提供了一系列丰富的API函数,而且这些函数在不同的WINDOWS版本上会略有不同。早期的WIDNOWS编译器就是在单纯的C/C++编译器中对平台特性提供支持,并没有提供更多的东西,如果你只打算使用WINDOWS API的话,编译器的选择可能只是编译优化程度的选择而已(也许你该选择BCB,据说要比VC优化的好一些,我没有真实的数据来对比,但BORLAND公司的编译器优化一向被认为是优秀的)。真正产生变化的是类库封装的开始。微软提供了MFC类库,BORLAND提供了OWL类库。所谓类库就是提供了对WINDOWS API的一种封装,相信每个写过WINDOWS API程序的人都有一个体会,一个最简单的WINDOWS窗口程序都需要几十行代码,这足以令初学者望而却步,相比之下DOS下的经典例程"hello world"却只需要短短的一行代码(所以DOS时代才令我怀念--简单,明了。呵呵)。类库的出现正是为了解决这个问题,WINDOWS类库主要是对WINDOWS下的API函数进行封装,来达到这样的目的:1)简化我们编程过程中的重复的简单工作(只创建窗口、建立消息环这样的单调工作);2)使我们的工作更符合面向对象的风格。如一个MFC中的窗口:
CWnd MyWindow;
MyWindow.Create(…);//这里省略了参数
    我们只需要创建一个窗口对象,通过对象的Create方法来创建窗口就可以了,完全不必再去关心底层的一些东西,整个过程就象工厂的一个生产过程--这也正是面向对象的精神所在(如果你现在不能体会这一点,不用着急,以后慢慢的自然会明白的)。
    VC和BCB采用了各自不同的方式(MFC和OWL)来封装,大家采用的手段各有所长,很难说哪个更好,唯一让MFC占优的应该是操作系统的优势了。相比之下,我个人认为起码在程序生成的环节上,BCB要好一些(其实BCB我个人也是浏览过一下,总共时间不过2-3天,只是做一次了解而已),在VC中,如果你为一个通用控件如CListCtrl关联一个变量,写过程序的人应该知道,编译器会作为一个类成员变量生成,而在BCB中,这个变量是以类成员指针的方式存在的,有什么区别呢?大量的局部变量会造成堆栈的溢出,这也是为什么你无法创建一个char largestr

来源:http://www.tulaoshi.com/n/20160129/1485538.html

延伸阅读
gcc编译器怎么用?   首先下载gcc编译器 ,然后根据提示进行安装。 1.安装了MinGW,在其根目录下的bin文件夹中发现有等文件。 为了测试,我在该文件夹中新建了一个test.bat文件,将其中内容写为:gcc test.cpp 2.然后在该文件夹中创建test.cpp文件并将其内容设置为: 3.双击test.bat文件,发现该文件夹中产生...
精通VC与MATLAB联合编程 ——编译器的使用 作者:邓科 下载源代码 浅析VC与MATLAB联合编程<一 浅析VC与MATLAB联合编程<二 浅析VC与MATLAB联合编程<三 浅析VC与MATLAB联合编程<四 精通VC与MATLAB联合编程<五 精通VC与MATLAB联合编程<六 精通VC与MATLAB联合编程<七 在上一章中对...
C++语言是一个面向对象的语言,使用C++编写的代码更加简捷、高效,更具可维护性和可重用性。但是很多人使用了C++语言后却感到C++与C编程没有什么区别。这其实是由于对C++语言的特点和特色理解和使用不够造成的。事实上,没有任何一个程序员使用C语言的编程效率可以超过C++语言的。 一、使用new和delete进行动态内存分配和...
  2004年4月20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或...
     引言      曾经有些人问我问题,问得都是一些很基础的问题,但这些人却已经能使用VC编一个对话框界面来进行必要的操作或者是文档/视界面来实时接收端口数据并动态显示曲线(还使用了多线程技术),却连那些基础的问题都不清楚,并且最严重的后果就是导致编写出拙劣的代码(虽然是多线...

经验教程

365

收藏

51
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部