我找不到任何能告诉我__thread
关键字/功能是否存在的功能/宏.
例如,我想在没有用户定义的情况下做这样的事情 HAS_TLS
#if HAS_TLS
static __thread int mytlsdata;
#else
static pthread_key_t mytlskey;
#endif
zwol.. 5
唯一预定的,标准的东西,即使是接近,是,
#if __STDC_VERSION__ >= 201112L && !defined __STDC_NO_THREADS__ static _Thread_local int mytlsdata; #endif
但这并没有检测到相同的前C11功能,例如你的__thread
.并且假设__STDC_VERSION__
准确反映编译器的真实能力在历史上一直是......不明智的.
我通常会在这一点上推荐Autoconf,但它似乎没有现成的测试来检测这些,如果你以前从未对Autoconf做过任何事情,那么这可能不是开始的地方.对不起,我无法提供更多帮助.