VC学习和使用需要注意的几点,千万不要忽略

jackyjkchen 2009-10-13 07:35:52
1.系统配置足够的情况下,尽量使用高版本;没有版权约束的条件下,尽量使用完整的团队版本。
VC的C/C++编译器虽然已经进化到了16.X版本(VC2010),但是这个版本号是从早期的Microsoft C++算下来的。VC的C/C++编译器从2003开始,对标准的支持就很保守,也是因为VC是商业IDE,大量的商业项目需要维护,有历史惯性,不能在编译器上太大做文章。因此,VC很少出现出现高版本与低版本不兼容的情况,尽可放心的使用最新版。现在大型开源醒目,普遍使用的还是gcc 3.4.5,就是考虑到gcc 4.x尤其是4.4.x加入的新特性可能会对原有代码造成不利影响,同时3.4.5久经考验非常稳定。

请无情的抛弃VC6,这个东西只会成为学习的障碍。

便宜没好货,在逐利的微软这里请绝对相信这句话,假如你只是学习和爱好编程而没有版权的束缚,请尽量使用团队版本,看重的就是静态代码分析、性能分析、测试工具等软件工程工具,你既然选择VC,我想你也是那种喜欢集成风格而不喜欢一堆加号的开发环境。静态代码分析,对于你养成优秀的代码风格可以说是有决定性影响力的工具,VC中的静态代码分析囊括了C/C++中绝大多是的风格问题和安全陷阱。基本上,从一个人写代码的格式、变量是不是初始化、缓冲区溢出的防止、内存管理是不是有漏洞等这些简单的细节就能了解这个人90%的C语言水平,C++有面向对象的使用,判断起来要复杂些。

2.除非你的英文水平与中文水平差不多,否则初学时尽量使用中文教材和中文版软件
C/C++语言本身就和英语没有多大关系(不像VB,就是英语句子),而初学者用的中文资料又特别多,CSDN这样的网站也多,人气也旺……初学者学习语法、语句等真不需要英文能力,也不必纠结于英文教材,那会让你学习效率下降几倍的。
学习编程只有到了一定高度只有英文资料的时候才需要阅读英文,比如MSDN的Windows API部分就没有中文的,各种著名的库如boost、tomcrypt也只有英文文档,这时候才是阅读英文资料的时候。
说中文版翻译有问题反而让人看不懂大多是为其本身的一些问题找理由,本质上就是你自己能力不足,给你看英文版一样也看不懂,我有个学Linux的同学为Linux中文化差找的理由就是微软的中文软件翻译“反而让人不懂”……他经常举的例子就是“XX内存不能为read/writen”……拜托,我给你“memory address 0xXXXXXXXX can't be read/written”你就懂了?
微软可以说是中文化做的最好的外国软件公司,其中文软件的水平甚至远远超越国货,从IDE界面到编译器错误提示,再到MSDN(IDE、编译器、.net等比较新的部分是中文的)。可以说,在你成为CSDN里被菜鸟敬仰的“大虾”之前,英语好不好对于学习是没有障碍的。当然再往高层次就需要阅读英文资料了。
初学者不要自讨没趣,英文如果是你交流的障碍,同样英文教材也是你学习编程的障碍,一别较著名的中文教材(哪怕是人人痛骂的谭浩强的书),对于初学者来书也强过英文教材,否则学习效率太低。

3.代码风格的问题以及标准库的选择
代码风格是绝大多数C/C++用户的弱项,这确实得怪谭浩强以及一大批高校教师,同时也是我强调静态代码分析的缘由。至今,我就没有见过一套笔试试卷(无论学校还是企业)的代码风格好过。C语言语法自由不代表你能乱来,建议安装VAssistX,强制格式化,在看看高质量C++。
VAssistX除了代码格式化外另一个重要功能是自动完成,说Windows API“规律、好记”的要么是超人,要么就是没用过多少API在哪里扯淡,因为Windows API的命名可以明显感到微软有点黔驴技穷、江郎才尽了……又臭又长而且规律性差,比较规律的都是老的API。

标准库的选择也放在代码风格里讲,因为这也属于代码风格的范围。VC大体上包含C标准库、C++标准库(包括STL)、Windows标准库、ATL库、MFC库这几大块。我给他们分成三大块:
1.C标准库
2.C++标准库
3.Windows标准库、ATL库、MFC库
这么分的目的就是告诉大家这三大类尽量别混用,MFC代码里出现vector,或者用cout处理ATL的CString,再或者同时出现strlen(C标准库)与lstrlen(API)……在VC里都不是好的代码风格。用了C库就别用C++库和API,用了API最好统一用API,MFC/ATL程序里别出现STL……就这几个原则。
再次提醒大家一下,由于VC中STL(不知道其它的C++标准库是不是)不是微软自己的实现,因此在比如中文兼容、编程风格等方面与Windows本身有差别,因此建议Windows SDK编程和ATL/MFC编程不要使用,应该在那种有跨平台需求或者不使用Windows API的C++工程中使用。
微软出于商业目的(不想让人跨平台),在VC中弱化了C/C++标准库的作用,其质量明显不如gcc,效率明显比API和gcc的标准库低,尤其是C++标准库,是跟着微软走还是另起炉灶,大家看着办。

4.编译器与IDE的学习建议
大量的书籍和观点强调语言本身,想弱化编程环境的影响,我个人感觉这对于C/C++的学习非常不利,因为这会导致你犯一些很SB的错误或者遇到一些无法解决的困难……别的不说,至今仍有超过50%的C/C++学习者甚至完全不知道debug与release的存在与区别,完全不知道编译优化的存在,你去看高校里头交大作业的有多少直接交debug版本的就知道(至少release版本更快,你的作业分也可能更高吧,最搞笑的是那些交数据结构作业的,对性能都有要求,还交debug……无语),你看C/C++入门书,几乎没有一个介绍系统介绍编译器与IDE的。

“初学者不需要好的编程环境,只需要了解语言本身,因此推荐TC”——记住,这句话是扯淡,是误人子弟!

VC的IDE里的编译选项说明都是全中文的,MSDN的编译器部分也是全中文的,命令行编译器cl.exe的所有帮助选项和错误提示都是全中文的,不多,你把MSDN里的编译选项一个一个看一遍,一个一个试一遍,最多花一天时间,相信对于C/C++,你会有完全不同的理解!同时,有了这个基础,gcc无师自通!这才是编译环境中立的学习方法,而现在教材里的所谓编译环境中立就是什么都不学!
...全文
663 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
clc0925 2009-10-15
  • 打赏
  • 举报
回复
强人
Seven_23 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pcboyxhy 的回复:]
引用 6 楼 loaden 的回复:
我认为,即使英文不好,也要用英文软件!


我也这么认为,常用单词就那么几个,习惯英文环境对进一步学习计算机帮助很大。
[/Quote]

中文版的毕竟不是原版,很多地方翻译也未必贴切,还是英文版的比较好,还能帮助学习英文,对于英文很差的那中文版确实可以减少很多麻烦
a369381959 2009-10-15
  • 打赏
  • 举报
回复
个人觉得看直接翻译过来的英文教材会好些,国人弄的那些东西实在是不敢看。
icefairy 2009-10-15
  • 打赏
  • 举报
回复
学习一下!
ForestDB 2009-10-15
  • 打赏
  • 举报
回复
算是一种观点和声音,虽然不是百分之一百的赞同或者反对。
sunsibin129 2009-10-15
  • 打赏
  • 举报
回复
学习一下!
liumenghappy 2009-10-15
  • 打赏
  • 举报
回复
学习
xinshou2595 2009-10-15
  • 打赏
  • 举报
回复
xuexi
dongfangbaozang7 2009-10-15
  • 打赏
  • 举报
回复
“初学者不需要好的编程环境,只需要了解语言本身,因此推荐TC”——记住,这句话是扯淡,是误人子弟!
jhony_lee 2009-10-14
  • 打赏
  • 举报
回复
屏幕上有苍蝇~!
yzl624358 2009-10-14
  • 打赏
  • 举报
回复
好东西,顶一下!
wcqqq 2009-10-14
  • 打赏
  • 举报
回复
很好,,,,真的很好......
butwang 2009-10-14
  • 打赏
  • 举报
回复
并不是最好的
hhwei1985 2009-10-14
  • 打赏
  • 举报
回复
UP
jackyjkchen 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 loveour 的回复:]
LZ很多说法我赞同~另外,LZ快到星了哈~
我有个问题,在windows平台上,C++标准库的函数,如果有需要,经过编译之后,是否会转化为调用系统的API?比如对文件输入输出的操作
[/Quote]
到底层肯定是的,但是封装太复杂会明显降低效率,比如cout
loveour 2009-10-14
  • 打赏
  • 举报
回复
LZ很多说法我赞同~另外,LZ快到星了哈~
我有个问题,在windows平台上,C++标准库的函数,如果有需要,经过编译之后,是否会转化为调用系统的API?比如对文件输入输出的操作
wensheng_zh2007 2009-10-13
  • 打赏
  • 举报
回复
好帖子帮顶了,有时间再看了。
oldCanISoftware 2009-10-13
  • 打赏
  • 举报
回复
UP
msdn2009_2010 2009-10-13
  • 打赏
  • 举报
回复
niu
Eveilei 2009-10-13
  • 打赏
  • 举报
回复
楼主大部分说的内容对我有帮助,谢了
加载更多回复(29)

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧