确定编译时是否支持thread_local关键字

时间:2016-01-15 19:55:40

标签: c++ c++11

我想在我的项目中使用thread_local关键字。但是,并非所有支持-std=c++11的编译器都支持thread_local。我能否知道是否有办法确定编译时是否支持thread_local?我试过谷歌搜索但没有找到答案。

1 个答案:

答案 0 :(得分:2)

  

但是,并非所有支持-std=c++11的编译器都支持thread_local

根据this reference他们需要符合c ++ 11标准。

因此,您的问题基本上归结为确定代码的某些部分是否使用-std=c++11选项进行编译,这已经很好answered here

如果您发现与特定操作系统环境/ C ++编译器实现的差异,我建议运行预编译脚本,探测特定的编译器功能,并为您生成config.h标头。

包含此标题可用于确定特定功能是否可用且您可以放置​​适当的

 #if defined(FEATURE)
     // feature specific code
 #else
     // plain code
 #endif

在你的标题和源文件中。

为了支持我引入的后一个选项,有GNU automake tools,它支持生成这样的探测脚本。它可用于支持各种目标平台。