VC2010之C++0x初体验

老邓 2009-05-21 06:06:22
VS2010 beta1发布了,我只关心其编译器对C++0x的支持如何。于是下载,安装,写最简单的控制台程序,命令行编译之,成功!没有了tr1命名空间了,这点感觉很好,不过thread看起来还不支持!
下面是测试程序:
#include <iostream>
#include <memory>
#include <vector>

int main()
{
for (auto i = 0; i < 10; ++i)
{
std::cout << i << std::endl;
}

std::shared_ptr<int> sp(new int(1));
std::cout << *sp << std::endl;

std::vector<double> v;
v.push_back(1.0);
v.push_back(1.0/2);
v.push_back(1.0/3);
for (auto it = v.begin(); it != v.end(); ++it)
{
std::cout << *it << std::endl;
}

return 0;
}


测试结果:
D:\>cl main.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.20506.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

main.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(355) : warning
C4530: C++ exception handler used, but unwind semantics are not enabled. Specify
/EHsc
main.cpp(4) : fatal error C1083: Cannot open include file: 'thread': No such fil
e or directory

D:\>cl main.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.20506.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

main.cpp
E:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(355) : warning
C4530: C++ exception handler used, but unwind semantics are not enabled. Specify
/EHsc
Microsoft (R) Incremental Linker Version 10.00.20506.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:main.exe
main.obj

D:\>main
0
1
2
3
4
5
6
7
8
9
1
1
0.5
0.333333
...全文
4889 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bingo123543 2010-05-21
  • 打赏
  • 举报
回复
会用的教教小弟啊!~ 不然我值得删掉装个虚拟机用VC6.0了。
QQ245564006
Bingo123543 2010-05-21
  • 打赏
  • 举报
回复
教我用啊,我下了 ,但是不会用呢。。我QQ245564006
会的希望能教教我啊。装了几个小时才装好的呢。
QQ_370566617 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 Loaden 的回复:]
引用 39 楼 hikaliv 的回复:
引用 36 楼 Loaden 的回复:
引用 35 楼 hikaliv 的回复:
我理解的MFC就是WINAPI上面包了个装,本质一样。所以带界面的WIN程序,我一律称为MFC,哈哈哈哈……

哦,MFC是界面库,需要用到MFC*.dll(相信微软如果使用MFC,则不可能静态编译)。
所以我总把WinSDK编程和MFC编程区分开。
其实我不会MFC编程:我只对wxWidgets界面库感兴趣。


前辈介绍一下 wx 的性能如何?底下包的是哪些…
[/Quote]

什么是原生界面。
如果包含界面库,确实强大了。跨平台使用者爽了。

不知何时能够赶超.net?
不过.net强大的类库,估计C++要追很久,比如.net remoting等等。只能指望第三方库了。
Winsock32 2009-06-04
  • 打赏
  • 举报
回复
大家可以把Visual C++ VC目录下的BIN、INCLUDE和LIB三个目录提取出来,然后再和Visual C++ 集成在一起不就得了。

http://blog.csdn.net/winsock32/archive/2009/05/24/4212166.aspx
zenny_chen 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 hikaliv 的回复:]
大家来谈谈
lambda表示式?

感觉很有delegate的味道,

底下是如何实现的?有前辈了解否?
[/Quote]

晕啊,阁下明明已经访问过那个帖子了,放在那里讨论不是很好吗?可惜已经结贴。
不过后面还有很多机会,呵呵。

至于lambda表达式的闭包特性的实现确实需要好好考虑。不过不同编译器的实现可能又是五花八门了,呵呵。
zenny_chen 2009-05-23
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 hikaliv 的回复:]
大家来谈谈
lambda表示式?

感觉很有delegate的味道,

底下是如何实现的?有前辈了解否?
[/Quote]

呵呵,已经有过讨论了:
http://topic.csdn.net/u/20090512/01/963a1ef6-3968-46af-b38d-8de0d7059243.html
appleshao 2009-05-22
  • 打赏
  • 举报
回复
这个跨时代的2010大家赶快下吧
Sou2012 2009-05-22
  • 打赏
  • 举报
回复
so fast!
zenny_chen 2009-05-22
  • 打赏
  • 举报
回复
嗯,不错。继我上星期的λ表达式后又有新贴出来了,呵呵。
虽然内容就是auto但还是要支持一下。
另外,C++09还提出了初始化器。
你可以将

std::vector<double> v;
v.push_back(1.0);
v.push_back(1.0/2);
v.push_back(1.0/3);



变成:

std::vector<double> v = {1.0, 1.0/2, 1.0/3};

楼主可以试试。
光宇广贞 2009-05-22
  • 打赏
  • 举报
回复
如是……那wx比MFC强大。
老邓 2009-05-22
  • 打赏
  • 举报
回复
你如果想测试wxWidgets的性能:你可以下载Code::Blocks编译器,它是用wxWidgets写的。
老邓 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 hikaliv 的回复:]
引用 36 楼 Loaden 的回复:
引用 35 楼 hikaliv 的回复:
我理解的MFC就是WINAPI上面包了个装,本质一样。所以带界面的WIN程序,我一律称为MFC,哈哈哈哈……

哦,MFC是界面库,需要用到MFC*.dll(相信微软如果使用MFC,则不可能静态编译)。
所以我总把WinSDK编程和MFC编程区分开。
其实我不会MFC编程:我只对wxWidgets界面库感兴趣。


前辈介绍一下 wx 的性能如何?底下包的是哪些库的接口?
[/Quote]
“前辈”二字可不敢当!
wx的性能比QT要好很多,原生界面,在Windows下包装的是API,在Linux下包装的是gtk。
几乎跨所有平台。
所有平台都是原生界面。
效率上与MFC相近:因为都使用消息链。
涉及到的库很多:其实已经超出了界面库的范畴,下载后有几十个例子,可以看看。

缺点是:界面不是最漂亮的!不够花俏。
光宇广贞 2009-05-22
  • 打赏
  • 举报
回复
大家来谈谈
lambda表示式?

感觉很有delegate的味道,

底下是如何实现的?有前辈了解否?
光宇广贞 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 Loaden 的回复:]
引用 35 楼 hikaliv 的回复:
我理解的MFC就是WINAPI上面包了个装,本质一样。所以带界面的WIN程序,我一律称为MFC,哈哈哈哈……

哦,MFC是界面库,需要用到MFC*.dll(相信微软如果使用MFC,则不可能静态编译)。
所以我总把WinSDK编程和MFC编程区分开。
其实我不会MFC编程:我只对wxWidgets界面库感兴趣。
[/Quote]

前辈介绍一下 wx 的性能如何?底下包的是哪些库的接口?
biosli 2009-05-22
  • 打赏
  • 举报
回复
新特性的介绍,大家可以参考一下。
biosli 2009-05-22
  • 打赏
  • 举报
回复
对于跨平台开发这可不是什么好事……要handle的事情又多了……
老邓 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 hikaliv 的回复:]
我理解的MFC就是WINAPI上面包了个装,本质一样。所以带界面的WIN程序,我一律称为MFC,哈哈哈哈……
[/Quote]
哦,MFC是界面库,需要用到MFC*.dll(相信微软如果使用MFC,则不可能静态编译)。
所以我总把WinSDK编程和MFC编程区分开。
其实我不会MFC编程:我只对wxWidgets界面库感兴趣。
光宇广贞 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 Loaden 的回复:]
引用 32 楼 hikaliv 的回复:
引用 25 楼 Loaden 的回复:
引用 23 楼 goodname 的回复:
矛盾的很。

要使用c++0x需要vs2010,但是又觉得wpf这些东西烦得很,浪费许多内存,对于低配机器是一种折磨。

要使vs2008+c++0x就好些了。

我只使用编译器,所以内存不是问题,wpf也不是问题。
很欣慰的是:编译器是原生的API程序.


当然,MFC写的,和.NET没有关系。

不是MFC写的,编译器是纯WinSDK编写,调用API。
[/Quote]

我理解的MFC就是WINAPI上面包了个装,本质一样。所以带界面的WIN程序,我一律称为MFC,哈哈哈哈……
老邓 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 akirya 的回复:]
摘出一个32位的编译器,多大?
[/Quote]如果去掉x64支持:103.5MB
老邓 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 hikaliv 的回复:]
引用 25 楼 Loaden 的回复:
引用 23 楼 goodname 的回复:
矛盾的很。

要使用c++0x需要vs2010,但是又觉得wpf这些东西烦得很,浪费许多内存,对于低配机器是一种折磨。

要使vs2008+c++0x就好些了。

我只使用编译器,所以内存不是问题,wpf也不是问题。
很欣慰的是:编译器是原生的API程序.


当然,MFC写的,和.NET没有关系。
[/Quote]
不是MFC写的,编译器是纯WinSDK编写,调用API。
加载更多回复(35)

64,648

社区成员

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

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