作为一名C++程序学习人员,热衷于语言新特性,减少智商的不兼容。一直是我所追逐的,但是自从微软.NET战略以来,Microsoft Visual C++ Compiler (下面简称cl)却越来越让人失望,Visual Studio也越来越让人惊喜\
cl让人失望的原因最重要的一点是mingw g++所产生的代码运行速度超过了他(1800与4.9.2),性能是无比重要的,当然,这很可能是微软的CRT实现问题(2015已大幅度重写)。性能问题也许改善了,但是更大的问题不得去面对
C++标准支持问题,在C++14已经放出的现在,2015 RTM的cl实现尚未完全支持c++11,尽管有一点比g++好的是,库支持的比他早(正则库),但这并没有什么卵用。当然,这可能是因为微软并没有投入大量关注点在编译器上面,当然RTM也只剩下一个核心特性没支持了,这个特性对我这种级别的菜鸟一点用都没有,expression SFINAE ,VC团队尽管在博客上解释了这个特性为什么不支持,但是g++已经支持了,更何况他是标准之一。当然 cl团队并不是没有作为的,在最新的特性上,比如C++17草案,cl里面都有一部分是支持的,看上去整个团队发力了样子,那么expression SFINAE会在update几更新了,我只希望在17年,cl里面的__cplusplus 宏能 >= 201103L(笑)
也许VC 6.0是哪个时代强大的编译器,在今天,cl 1900都感觉落后于时代的脚步,当然这只是本身的失望,cl在其他方面做出了非常多的改进,承受着莫名其妙的ICE错误,我依旧使用他的原因
来说说我比较喜欢的改进,也许我用不到他
单文件智能感知
无论怎么样,我都不会为只有一个源文件的小程序去建议一个解决方案,麻烦,并且打开VS本身需要时间,我可以用许多轻量级的编辑器来避免这种事情,比如Sublime Text,一次配置,终身有效。有时候我只想编辑一个单独的源文件而已,但在之前的VS中,仅仅只有语法关键字的高亮,这远远不够,也不能让人满足。这种需求是很明显的需求,很多Linux粉就喜欢拿这个来黑VS,终于做出了改进
编辑并继续
懂的都懂,这个对快速的调试非常有用
那么说一些我喜爱的功能,当然这部分跟C++联系不是很紧密
DEBUG功能
VS的强大不在于他的DEBUG功能有多逆天,而是足够的对人友好,当然,说个笑话,给VS反馈BUG,需要提交dump文件,而vs自己产生的大的一比,于是你懂的,在DEBUG模式下我基本能修正一些不经意在犯下的愚蠢错误
Shader调试
学习图形学的过程是非常痛苦的,尤其是初学者,当你出了问题,屏幕一片黑,啥也没渲染出来,你只能靠跟踪代码来看看这个context被设置了啥状态,VB,IB的数据有没有问题,至于Shader是不是算错了,更加是无从可知,还有AMD渣驱动所带来的驱动BUG,简直是人道级别的毁灭,在DX SDK中是带有一个调试工具的,然而,这个工具不够强大,最关键的,在我的渣笔记本显卡上崩掉是非常大几率的,直到这个功能被整合进VS(只支持D3D10/11/12),我草,我简直一下子被解放了,draw call,状态设置的记录直接可以在vs里面看见,vb输入了一个什么模型,直接显示出来!还有就是知道到底是vertex shader还是pixel shader写错了,是被z裁剪了还是模板,非常明了,颜色的混合通通有记录,大概以前可能写错了要复查一下午,现在大概只需要一个小时了,关键是能够逐shader代码调试,这个让我有检查送进GPU的值是不是正确的,简直我这种彩笔的福音
当然,VS2015 RTM的cl编译器 using容易导致ICE的问题至今未被修复,我只想选择死亡
小注:有C++神级人物供职微软,Herb Sutter(C++ 标准委员会主席...)
Stephan T.lavavej(VC STL实现)
窗体底端