我找不到任何可以告诉我__thread
关键字/功能是否存在的功能/宏。
例如,我想做这样的事情而无需用户定义 HAS_TLS
#if HAS_TLS
static __thread int mytlsdata;
#else
static pthread_key_t mytlskey;
#endif
甚至接近的唯一预定义的,标准的东西是,
#if __STDC_VERSION__ >= 201112L && !defined __STDC_NO_THREADS__
static _Thread_local int mytlsdata;
#endif
但这不会检测到等效的C11之前的功能,例如__thread
。__STDC_VERSION__
一直以来,假设能够准确反映编译器的真实功能是不明智的。
我通常会在此时推荐Autoconf,但是似乎没有现成的测试可以检测到这些,并且,如果您以前从未对Autoconf进行过任何操作,那么也许不是开始的地方。抱歉,我帮不上忙。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句