哲思官方群认证群组  - 讨论区

标题:[zeuux-universe] 现在在项目中使用C++11标准特性可行吗

2013年03月20日 星期三 09:33

Kermit.Mei kermit.mei在gmail.com
星期三 三月 20 09:33:28 CST 2013

Hello all,

    RT。
    我查阅了维基C++11的相关内容,该标准11年已经正式发布。按理说间隔一年,应该各编译器已经成熟实现了吧?
     我的项目希望跨IOS,android,Linux,甚至Win和MacOS等平台,我发现Linux的个g++依然没有-std=c++11,它目前用的是-std=c++0x,而在ios开发环境中已经支持c++11,android上我测试过,至少shared_ptr那部分也没问题。

    现在很纠结,用c++11到项目中就目前编译器支持而言是否合适?有没有哪些成熟的项目已经迈出这步?

    望指点!



Thanks
B.R
Kermit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2013年03月20日 星期三 10:48

Yongwei Wu wuyongwei在gmail.com
星期三 三月 20 10:48:42 CST 2013

关于具体项目不熟悉。GCC 4.7已经支持选项-std=c++11,支持幅度也提升很大。而即将发布的GCC 4.8将和Mac
上的Clang一样提供最好的C++11特性支持。

Android可能是个问题。我也不知道NDK里什么时候和怎么样更新编译器。

具体的编译器支持程度,可以参考以下链接:

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
http://gcc.gnu.org/gcc-4.8/cxx0x_status.html

对于部分C++11特性,我有个用来检查的头文件,也许你也可以参考:

http://nvwa.cvs.sourceforge.net/viewvc/nvwa/nvwa/c%2B%2B11.h?view=markup

2013/3/20 Kermit.Mei <kermit.mei在gmail.com>:
> Hello all,
>
>     RT。
>     我查阅了维基C++11的相关内容,该标准11年已经正式发布。按理说间隔一年,应该各编译器已经成熟实现了吧?
>      我的项目希望跨IOS,android,Linux,甚至Win和MacOS等平台,我发现Linux的个g++依然没有-std=c++11,它目前用的是-std=c++0x,而在ios开发环境中已经支持c++11,android上我测试过,至少shared_ptr那部分也没问题。
>
>     现在很纠结,用c++11到项目中就目前编译器支持而言是否合适?有没有哪些成熟的项目已经迈出这步?
>
>     望指点!
>
>
>
> Thanks
> B.R
> Kermit
> _______________________________________________
> zeuux-universe mailing list
> zeuux-universe在zeuux.org
> http://www.zeuux.org/mailman/listinfo/zeuux-universe
>
> ZEUUX Project - Free Software, Free Society!
> http://www.zeuux.org



-- 
Wu Yongwei
URL: http://wyw.dcweb.cn/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2013年03月20日 星期三 12:56

Kermit.Mei kermit.mei在gmail.com
星期三 三月 20 12:56:06 CST 2013

在 2013-3-20,上午10:48,Yongwei Wu <wuyongwei在gmail.com> 写道:

> 关于具体项目不熟悉。GCC 4.7已经支持选项-std=c++11,支持幅度也提升很大。而即将发布的GCC 4.8将和Mac
> 上的Clang一样提供最好的C++11特性支持。
> 
> Android可能是个问题。我也不知道NDK里什么时候和怎么样更新编译器。
> 
> 具体的编译器支持程度,可以参考以下链接:
> 
> http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
> http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
> 
> 对于部分C++11特性,我有个用来检查的头文件,也许你也可以参考:
> 
> http://nvwa.cvs.sourceforge.net/viewvc/nvwa/nvwa/c%2B%2B11.h?view=markup

OK,多谢YongWei兄!

Android我刚才看了,最新的NDK提供的是 gcc 4.7, 而且按照之前我的测试,
至少shared_ptr这个东西是支持到了,不过当时好像没升级,要加如的编译参数
是 -std=c++0x。

我回头用你给出的头文件再测测。 目前的我想的办法是
typedef MyTypePtr  std::shared_ptr, 如果万一出问题,有
不支持的平台,我重新实现一次这些接口也不至于用不了。


B.R
Kermit

> 
> 2013/3/20 Kermit.Mei <kermit.mei在gmail.com>:
>> Hello all,
>> 
>>    RT。
>>    我查阅了维基C++11的相关内容,该标准11年已经正式发布。按理说间隔一年,应该各编译器已经成熟实现了吧?
>>     我的项目希望跨IOS,android,Linux,甚至Win和MacOS等平台,我发现Linux的个g++依然没有-std=c++11,它目前用的是-std=c++0x,而在ios开发环境中已经支持c++11,android上我测试过,至少shared_ptr那部分也没问题。
>> 
>>    现在很纠结,用c++11到项目中就目前编译器支持而言是否合适?有没有哪些成熟的项目已经迈出这步?
>> 
>>    望指点!
>> 
>> 
>> 
>> Thanks
>> B.R
>> Kermit
>> _______________________________________________
>> zeuux-universe mailing list
>> zeuux-universe在zeuux.org
>> http://www.zeuux.org/mailman/listinfo/zeuux-universe
>> 
>> ZEUUX Project - Free Software, Free Society!
>> http://www.zeuux.org
> 
> 
> 
> -- 
> Wu Yongwei
> URL: http://wyw.dcweb.cn/
> _______________________________________________
> zeuux-universe mailing list
> zeuux-universe在zeuux.org
> http://www.zeuux.org/mailman/listinfo/zeuux-universe
> 
> ZEUUX Project - Free Software, Free Society!
> http://www.zeuux.org

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2013年03月20日 星期三 21:09

Yongwei Wu wuyongwei在gmail.com
星期三 三月 20 21:09:08 CST 2013

2013/3/20 Kermit.Mei <kermit.mei在gmail.com>:
> 在 2013-3-20,上午10:48,Yongwei Wu <wuyongwei在gmail.com> 写道:
>
>> 关于具体项目不熟悉。GCC 4.7已经支持选项-std=c++11,支持幅度也提升很大。而即将发布的GCC 4.8将和Mac
>> 上的Clang一样提供最好的C++11特性支持。
>>
>> Android可能是个问题。我也不知道NDK里什么时候和怎么样更新编译器。
>>
>> 具体的编译器支持程度,可以参考以下链接:
>>
>> http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
>> http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
>>
>> 对于部分C++11特性,我有个用来检查的头文件,也许你也可以参考:
>>
>> http://nvwa.cvs.sourceforge.net/viewvc/nvwa/nvwa/c%2B%2B11.h?view=markup
>
> OK,多谢YongWei兄!
>
> Android我刚才看了,最新的NDK提供的是 gcc 4.7, 而且按照之前我的测试,
> 至少shared_ptr这个东西是支持到了,不过当时好像没升级,要加如的编译参数
> 是 -std=c++0x。

4.7应该支持-std=c++11了吧。会不会是以前老版本上发现只能用-std=c++0x的?4.6就不能用-std=c++11的。

> 我回头用你给出的头文件再测测。 目前的我想的办法是
> typedef MyTypePtr  std::shared_ptr, 如果万一出问题,有
> 不支持的平台,我重新实现一次这些接口也不至于用不了。

单就shared_ptr的问题,不建议你的方法。shared_ptr已经够标准化了。实在担心用类似下面的方法:

#if defined(HAVE_CXX11_SHARED_PTR)
using std::shared_ptr;
#elif defined(HAVE_TR1_SHARED_PTR)
using std::tr1::shared_ptr;
#elif defined(HAVE_BOOST_SHARED_PTR)
using boost::shared_ptr;
#else
#error "shared_ptr not defined!"
#endif

也就是说,利用名空间和using,而不是自定义的奇怪名字。

-- 
Wu Yongwei
URL: http://wyw.dcweb.cn/

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2013年03月21日 星期四 00:47

Kermit.Mei kermit.mei在gmail.com
星期四 三月 21 00:47:44 CST 2013

在 2013-3-20,下午9:09,Yongwei Wu <wuyongwei在gmail.com> 写道:

> 2013/3/20 Kermit.Mei <kermit.mei在gmail.com>:
>> 在 2013-3-20,上午10:48,Yongwei Wu <wuyongwei在gmail.com> 写道:
>> 
>>> 关于具体项目不熟悉。GCC 4.7已经支持选项-std=c++11,支持幅度也提升很大。而即将发布的GCC 4.8将和Mac
>>> 上的Clang一样提供最好的C++11特性支持。
>>> 
>>> Android可能是个问题。我也不知道NDK里什么时候和怎么样更新编译器。
>>> 
>>> 具体的编译器支持程度,可以参考以下链接:
>>> 
>>> http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
>>> http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
>>> 
>>> 对于部分C++11特性,我有个用来检查的头文件,也许你也可以参考:
>>> 
>>> http://nvwa.cvs.sourceforge.net/viewvc/nvwa/nvwa/c%2B%2B11.h?view=markup
>> 
>> OK,多谢YongWei兄!
>> 
>> Android我刚才看了,最新的NDK提供的是 gcc 4.7, 而且按照之前我的测试,
>> 至少shared_ptr这个东西是支持到了,不过当时好像没升级,要加如的编译参数
>> 是 -std=c++0x。
> 
> 4.7应该支持-std=c++11了吧。会不会是以前老版本上发现只能用-std=c++0x的?4.6就不能用-std=c++11的。

android的g++4.7是支持的,我在命令行试过了。


> 
>> 我回头用你给出的头文件再测测。 目前的我想的办法是
>> typedef MyTypePtr  std::shared_ptr, 如果万一出问题,有
>> 不支持的平台,我重新实现一次这些接口也不至于用不了。
> 
> 单就shared_ptr的问题,不建议你的方法。shared_ptr已经够标准化了。实在担心用类似下面的方法:
> 
> #if defined(HAVE_CXX11_SHARED_PTR)
> using std::shared_ptr;
> #elif defined(HAVE_TR1_SHARED_PTR)
> using std::tr1::shared_ptr;
> #elif defined(HAVE_BOOST_SHARED_PTR)
> using boost::shared_ptr;
> #else
> #error "shared_ptr not defined!"
> #endif
> 
> 也就是说,利用名空间和using,而不是自定义的奇怪名字。

嗯,我参考下这个用吧。今天还在想尽量回避这些支持面还没有完全覆盖到所有
平台的东西。所以最后把内存释放做成类似QT的父子对象管理的方式来弄了。



> 
> -- 
> Wu Yongwei
> URL: http://wyw.dcweb.cn/
> _______________________________________________
> zeuux-universe mailing list
> zeuux-universe在zeuux.org
> http://www.zeuux.org/mailman/listinfo/zeuux-universe
> 
> ZEUUX Project - Free Software, Free Society!
> http://www.zeuux.org

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号