我想在我的项目中使用thread_local
关键字。但是,并非所有支持-std=c++11
的编译器都支持thread_local
。我能否知道是否有办法确定编译时是否支持thread_local
?我试过谷歌搜索但没有找到答案。
答案 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,它支持生成这样的探测脚本。它可用于支持各种目标平台。