xcode - c++ 线程本地存储 clang-503.0.40 (Mac OSX)

标签 xcode macos c++11 clang thread-local-storage

在我以这种方式声明一个变量之后:

   #include <thread>
   namespace thread_space
    {
    thread_local int s;
    } //etc.

我尝试使用“g++ -std=c++0x -pthread [sourcefile]”编译我的代码。我收到以下错误:
example.C:6:8: error: thread-local storage is unsupported for the current target
static thread_local int s;
       ^
1 error generated.

如果我尝试在带有相同标志的 GCC 4.8.1 的 Linux 上编译相同的代码,我会得到一个正常运行的可执行文件。我在运行 OSX 10.9.3 的 MacBook Pro 上使用 clang-503.0.40(Xcode 5.1.1 附带的那个)。谁能解释一下我做错了什么?
谢谢!!

最佳答案

试试 clang++ -stdlib=libc++ -std=c++11 . OS X 过时的 libstdc++ 不支持 TLS。

编辑

好的,这适用于普通的 clang 版本,但不适用于 Xcode 版本。

我对 Apple's clang (503.0.38) 做了一个比较和 normal released one并发现以下差异:

        .Case("cxx_thread_local",
-                 LangOpts.CPlusPlus11 && PP.getTargetInfo().isTLSSupported() &&
-                 !PP.getTargetInfo().getTriple().isOSDarwin())
+                 LangOpts.CPlusPlus11 && PP.getTargetInfo().isTLSSupported())

所以我认为这是 Apple 的 clang 版本中的一个错误(或者他们故意将它保留在那里 - 但仍然很奇怪,因为 -v 基于 3.4 说)。

关于xcode - c++ 线程本地存储 clang-503.0.40 (Mac OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23791060/

相关文章:

c++ - 为什么 std::bind 在这个例子(成员函数)中没有占位符就不能工作?

xcode - 更改标签文本时延迟响应(Swift)

ios - 当项目名称有空格时无法从桥头获取正确的文件路径

ios - 提交到App Store问题:不支持的体系结构x86

python - 在 Mountain Lion 上安装 Pygame 时出错

c++ - 将整数或类型作为模板参数传递?

objective-c - 检测isIpad的更好方法?

cocoa - 在 Mac 上使用 Qt 捕获停靠栏图标上的单击事件

将 OS X 升级到 Mojave 10.14.4 后,C 头文件丢失

C++异常设计