随笔-341  评论-2670  文章-0  trackbacks-0
    Visual Studio 2012发布的那一天我就把它搞到手了。新的C++ IDE真的是劲爆了,写代码的感觉毫不亚于C#。我最喜欢的部分是智能补全和着色部分。如今C++的宏被渲染成屎红色,类型被渲染成屎绿色,参数被渲染成屎灰色,这样基本不需要要编译,看着颜色都知道有没有写对。智能补全已经赶超VAX,而且还实现了“缩写过滤”,譬如说输入PNT就可以在弹出列表里面显示所有大写字母为PNT的对象(譬如说ParsingNodeTransition)等等。这样做的好处是,我只要打有限几个字符就可以补完一整句了,输入速度大大提高。

    所以我升级了几乎所有工程。文档生成部分由于还在使用DIA100,所以暂时没有升级到2012,不过这是迟早的事情。不过这次升级遇到了几个小问题。

    第一个是,对于没有capture任何外部变量的lambda expression,它可以隐式转换成一个函数指针。这个功能VS2010是没有的,结果升级了之后造成了我几个重载函数的问题,不过解决这个东西还是很简单的,只要把lambda表达式先保存在一个vl::Func变量里面就好了。

    第二个是WICImagingFactory。在Windows SDK 7.0里面,CLSID_WICImagingFactory指向了WIC的唯一一个版本。在Windows SDK 8.0里面,出现了CLSID_WICImagingFactory1和CLSID_WICImagingFactory2,并且CLSID_WICImagingFactory等于CLSID_WICImagingFactory2。问题就来了,Windows 7里面并没有WICImagingFactory2,结果我CoCreateInstance就是败了。一开始觉得很奇怪,后来想了想,直接用VS那强大的Go To Definition功能跳到了定义CLSID_WICImagingFactory的地方,然后发现了这个事情。因此我就把代码改成了,如果sdk用的是高级版本,就强制使用1.0的。

    VS2012对模板语法的检查更加严格了。以前还可以写typename A<T>::B<T>,现在不行了,得写成typename A<T>::template B<T>。其实后面那个才是标准的,而且VS2010也支持。只是VS2010也允许你省略template。

    VS2012对于C++的改进已经跟C#几乎一模一样了,而且VS2012还支持C++的单元测试项目。总的来说,我十分喜欢。
posted on 2012-08-30 05:29 陈梓瀚(vczh) 阅读(10755) 评论(25)  编辑 收藏 引用 所属分类: C++

评论:
# re: 开始使用VS2012来开发GacUI了 2012-08-30 06:09 | 毕达哥拉斯半圆
果然是啊大师啊,失敬失敬,有个请教您两个问题,1. 在win7的directx中,怎么样从ID2D1Bitmap获得raw-bitmap-data,从而可以用CopyFromMemory? 我感觉CreateSharedBitmap怪怪的,不太喜欢用,2. 怎样从ID2D1Bitmap转换到WICbitmap? (当然第一个问题有答案之后第2个就解决了)请大师不吝赐教啊!  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 06:34 | 陈梓瀚(vczh)
@毕达哥拉斯半圆
这,看我的代码啦……就在\Libraries\GacUI\Source\NativeWindow\Windows\ServicesImpl\WindowsImageService.cpp  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 06:46 | 毕达哥拉斯半圆
@陈梓瀚(vczh)
好的,谢谢,哈哈!!  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 07:40 | 毕达哥拉斯半圆
没有找到我想要的 ... 请大师再看看我的问题呀  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 07:45 | YzL
再好又有啥用,编译出来的程序都不能在XP上运行,目前哪个软件敢完全无视XP用户?  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 07:48 | 陈梓瀚(vczh)
@YzL
2008编译一下就可以了,我发布的只是源代码,怎么编译那不是我应该关心的事情。

而且就算用VS2010,XP SP3也是可以用的。再说了,大部分系统都可以用.net来写,那根本没有XP不能运行的问题。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 22:21 | Matthew Lee
你用了VS2012中的C++11的特性后,再拿回VS2010里是编译不通过的,更加别说VS2008了  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-30 23:14 | 溪流
代码编辑器的配色我也蛮喜欢的,可是外围的界面,只能屎白色或者屎黑色的,我不喜欢,说好的屎蓝色呢?  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-08-31 16:18 | phoenixbing
屎红色,屎绿色,屎灰色。
我是来膜拜屎颜色的  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-01 00:20 | 陈梓瀚(vczh)
@Matthew Lee
实现的地方不会有那些新的特性的,只有Demo才会用。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-02 20:31 | Chipset
VS2012功能丰富,想干啥都方便了很多。

缺点就是太大了,机器运行起来明显感觉慢。这微软弄那么多C#写的插件塞在里面,狂吃内存还拖慢速度,就为快速开发?我机器配置E3 1230,8G内存双通道,1T硬盘64M缓存,主板芯片C202,Win7 x64系统,不应该是机器问题,运行别的程序飞快呀。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-02 22:06 | 陈梓瀚(vczh)
@Chipset
深表同情,VS2010开始对显卡有要求。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-02 22:08 | 陈梓瀚(vczh)
@Chipset
不过是不是机器问题很难说得,我那台i7830+8G双通道+300G硬盘,用起vs2012流畅无比,就跟用记事本的时候一样。当然我这台机器是公司发的,里面除了office和vs就没有别的什么东西了,你可以看看你是不是运行了太多后台进程,譬如说某些黑心公司的杀毒软件?  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-02 23:00 | w
vs2008 + VAX不觉得有啥不好的,最后一个原生版本的IDE,速度才叫快.

写程序用得着那么多新特性么?简单质朴才是王道  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-03 00:28 | lwch
VS2012的确快了好多~~我现在在用CMake来生成项目.  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-03 16:58 | egmkang
@lwch
cmake可以生成VS 2012的项目文件?  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-03 20:22 | Chipset
@陈梓瀚(vczh)

谢谢。显卡蓝宝HD5750 GDRR5 1G显存,中端游戏卡,应该没问题呀。

看来我得查下后台看看谁在作怪。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-04 02:03 | 陈梓瀚(vczh)
@w
生产力才是王道,其他的都是假的。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-04 18:00 | 空明流转
@陈梓瀚(vczh)

人家生产力也没差,用了VAX。

吐个槽,VAX+VS2008在我的本子上比VS2012慢不少。。。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-10 18:03 | 星绽紫辉
建议:

我觉得楼主其实可以不用再搞这个GacUI了,VS2012发布后,使用C# + WPF + C++ 的混合方式编程,界面根本不是个问题。

不知道楼主用过GitHub没有,可以看下它的设计实现过程:
http://www.oschina.net/question/12_57382

别人都说C#慢,其实用C#做界面,然后核心用C++实现,通过Python或者Lua脚本衔接,性能也不错。

至于.NET依赖,这将不是问题,微软为C++用户提供了接口自动安装.Net依赖库。

在Win7 & Win7+ 日益流行的今天,混合编程已是一种趋势。易于编码变得非常重要,性能速度在今后将逐渐不是个问题。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-16 19:59 | 陈梓瀚(vczh)
@星绽紫辉
不搞这个的话,一直搞compiler很闷的哦,终止写代码的话就又不能持续提高自己的水平了,所以我还是做了。我自己也是很喜欢用C#写GUI的,可以理解你的说法。  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-27 07:34 | 唐风
信了楼主的体验,升级了工程(当然,偶是下的“试用”)
智能提示很慢,和VC助手的功能相比差距还是很明显啊

不过2012启动还是很快的。
虽然如此,还是受不了没有助手的生活。
果断退回  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了 2012-09-27 21:09 | UMU
哪里不行了?明明可以!@YzL
  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-27 21:24 | 陈梓瀚(vczh)
@唐风
请不要使用古老的电脑来运行新世纪的软件  回复  更多评论
  
# re: 开始使用VS2012来开发GacUI了[未登录] 2012-09-28 05:28 | flagman
梓瀚兄,我也很是喜欢VS2012,改进地方很多,比如所有开发人员常用的符号查找,在2012中非常的给力!

不过前一阵子在公司相关项目从2008迁移到2012的过程中,也发现了2012的一些bug和问题。。。

总体来说,瑕不掩瑜,推荐大家把各自的工程在可能的情况下迁移到2012!  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理