首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以查询编译器对C++0x "alignas“的支持吗?

我可以查询编译器对C++0x "alignas“的支持吗?
EN

Stack Overflow用户
提问于 2011-08-24 12:16:06
回答 1查看 632关注 0票数 1

我正在编写一些可以从16字节对齐中受益的类和结构。为了将来的可移植性,我宁愿使用新的C++0x alignas功能,而不是使用特定于编译器的hack。但是,在适当的#ifdef#ifndef保护之外使用它显然会在没有alignas支持的编译器上导致错误。

我快速搜索了一下类似的问题,the closest match得到了一个推荐Boost.Config的答案。不幸的是,Boost.Config似乎不包含任何查询alignas支持的功能。有没有其他的#ifdef#ifndef可以用来判断编译器是否支持它?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-24 15:14:44

对于各种C++0x (C++11)工具,没有直接的功能支持宏。我能想到的只有两种方法来确定他们的存在。

  1. 保留支持编译器的列表,并使用基于编译器提供的版本宏的#ifdef指令,例如__GNUC___MSC_VER,或使用
  2. 在生成之前使用功能检测脚本(例如autoconf )检测编译器支持,并使用您自己的宏构造一个头文件,指示是否支持该功能。

使用Boost.Config实际上是两者的一个例子: Boost有一组在Boost开发期间运行的特征检测脚本,然后根据编译器版本宏将结果硬编码到Boost.Config头文件中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7170367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档