我正在编写一些可以从16字节对齐中受益的类和结构。为了将来的可移植性,我宁愿使用新的C++0x alignas功能,而不是使用特定于编译器的hack。但是,在适当的#ifdef或#ifndef保护之外使用它显然会在没有alignas支持的编译器上导致错误。
我快速搜索了一下类似的问题,the closest match得到了一个推荐Boost.Config的答案。不幸的是,Boost.Config似乎不包含任何查询alignas支持的功能。有没有其他的#ifdef或#ifndef可以用来判断编译器是否支持它?
谢谢!
发布于 2011-08-24 15:14:44
对于各种C++0x (C++11)工具,没有直接的功能支持宏。我能想到的只有两种方法来确定他们的存在。
#ifdef指令,例如__GNUC__和_MSC_VER,或使用使用Boost.Config实际上是两者的一个例子: Boost有一组在Boost开发期间运行的特征检测脚本,然后根据编译器版本宏将结果硬编码到Boost.Config头文件中。
https://stackoverflow.com/questions/7170367
复制相似问题