C++ 0x compiler
night_stalker
2010-05-10
话说那本书已经 out 了,现在都 1x 好几个月了 ……
c++1x 如果支持 thread 的话,可以把 rubinius 和 llvm 里面的 thread 换一换了。。。 |
|
betty_betty2008
2010-05-11
lifc 写道 gcc 4.5目前对c++0x支持比vc10完善,主要别是variadic template以及一些新c++0x库方面。有个之前用d的项目正在逐渐向c++0x移植,用到了thread、atomic和functional以及lambda。g++ 4.5和mingw g++ 4.5去年开始就已经支持这些功能,现在的正式版更加没有问题。头文件分别是<thread>、<atomic>、<functional>,gcc中名字空间属于std(不是tr1)。其中lambda是语言内建功能,可以通过模板传递或配合std::bind、std::function使用,也可以参照std::function自己封装,关键在于了解lambda:operator()这个基本概念。
请原谅我太蠢,装了MINGW4。5但就是没找到thread.h |
|
night_stalker
2010-05-11
一开始以为 lz 说的 pthread,原来是 std::thread 呢……
GCC 4.5 支持 std::thread,但 mingw GCC 4.5 不支持 …… 除了 thread 以外,mingw GCC 支持的其他 c++1x 特性基本同 GCC 4.5 。编译时加上参数 -std=c++0x 即可。 <thread> 头文件是存在的(没有 .h 后缀)。包含在 stdc++ 4.5 那个包中。 可以 include 但是里面没有定义 std::thread …… 另外 M$ 应该是不会支持 c++1x 的 std::thread 的 …… |
|
lifc
2010-05-16
betty_betty2008 写道 请原谅我太蠢,装了MINGW4。5但就是没找到thread.h 楼上已经说过了,不是thread.h,而是thread,直接include <thread>。我系统中位置:/usr/i486-mingw32/include/c++/4.5.0/thread。linux下除了-std=c++0x还要加上-pthread编译选项,否则生成的代码运行出错,具体原因看一下头文件应该就明白了。 |
|
betty_betty2008
2010-05-17
多谢晒!!
|
|
lifc
2010-05-22
今天问过负责windows移植的同事,mingw 4.5目前没有直接提供win32平台下的std::thread。因为gcc底层用到的gthr线程库win32移植不完善,要自己改bits/gthr.h(加入include <gthr-win32.h>),修改gcc源码目录gcc/gthr-win32.h和gcc/config/i386/gthr-win32.c,加入缺少的定义和实现。
另外一个据说可行的方法就是用win32版的pthread,不过我们没实际测试过。 |
|
betty_betty2008
2010-05-23
lifc 写道 今天问过负责windows移植的同事,mingw 4.5目前没有直接提供win32平台下的std::thread。因为gcc底层用到的gthr线程库win32移植不完善,要自己改bits/gthr.h(加入include <gthr-win32.h>),修改gcc源码目录gcc/gthr-win32.h和gcc/config/i386/gthr-win32.c,加入缺少的定义和实现。
另外一个据说可行的方法就是用win32版的pthread,不过我们没实际测试过。 多谢,费心. 我装了Ubuntu 10.04,已有发现thread,不过还没试过. 闲话一句,前后装过几次U,这次感觉着实不错,觉得个人用已不比XP差什么了.看样子以后能少用盗版了. |