【问题标题】:clang++ C++11 invocationclang++ C++11 调用
【发布时间】:2012-01-08 09:22:58
【问题描述】:

虽然这里有一些关于clang的C++11支持的问题,但我似乎无法让clang++吃掉我的C++11代码。

$ clang++ --version
clang version 2.9 (tags/RELEASE_29/final)
Target: x86_64-pc-linux-gnu
Thread model: posix

根据the clang C++11 status page,我应该至少有部分支持(例如直角括号),但它拒绝了我测试的所有功能。

是否有任何开关告诉 clang 使用 C++11?


示例测试:

$ clang++ -stdlib=libstdc++ cpp11.cpp 
cpp11.cpp:16:33: error: a space is required between consecutive right angle brackets (use '> >')
  std::vector<std::pair<int,char>> xs;
                                ^~
                                > >
cpp11.cpp:18:8: error: C++ requires a type specifier for all declarations
  auto y = x;
  ~~~~ ^
2 errors generated

【问题讨论】:

  • @ildjarn:是的,但它被这个论点严重扼杀(大约两页错误消息和一个最终的 Segfault)。
  • 这是苹果版还是基础版?问是因为我向主站点报告了一个 Apple 错误并被激怒了 :)
  • @MichaelDorgan:不,这不是苹果。普通的 Linux/GNU。

标签: c++ c++11 clang


【解决方案1】:

ildjarn 指出了正确的论点,-std=c++0x-std=c++11。您使用该参数时遇到的错误可能是因为您使用的 libstdc++ 版本使用了 clang 2.9 不支持的某些 C++11 或非标准 C++。

【讨论】:

  • 尝试类似clang++ -std=c++0x -stdlib=libc++ ... 的方法(当然,假设您安装了 libc++)。
  • @Huw:是的,我刚刚意识到我可以在libc++libstdc++ 之间进行选择,到目前为止我懒得自己编译clangllvm,所以我明白了来自我的包源,其中不包括libc++,如果我相信该库仅适用于 Mac 的项目文档。这意味着它对我不可用,对吧?
  • @bitmask:是的,它看起来不适用于非 OS X 系统,唉。
  • @bitmask 我刚刚做了一个快速的谷歌搜索并想出了一篇可能有帮助的文章:solarianprogrammer.com/2011/10/16/llvm-clang-libc-linux
  • @Huw:我认为 libc++ 已成功移植到一些 Linux 发行版。 Windows 端口正在进行中。问题是,您离 OSX 架构越远,您必须为端口提供越多。这和 Windows 端口面临 MSVC++ 的疯狂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2011-12-20
  • 1970-01-01
  • 2013-07-26
  • 2014-04-02
  • 2014-05-25
  • 2012-11-01
相关资源
最近更新 更多