【问题标题】:how to get C++0x / C++11 style range-based for loops to work with clang?如何让 C++0x / C++11 风格的基于范围的 for 循环与 clang 一起使用?
【发布时间】:2011-09-06 04:21:51
【问题描述】:

我一直在使用带有 -std=c++0x 的 gcc 在 C++0x/11 中利用基于范围的 for 循环,如下所示:

for (int i : container) ...

我最近尝试过 clang (clang+llvm-2.9-x86_64-apple-darwin10),但这些语句开箱即用是编译错误。根据http://clang.llvm.org/cxx_status.html 支持。我尝试在命令行上添加 -stdlib=libc++,但随后我收到一个错误,即找不到 iostream 标头。我需要做什么才能让 clang 使用 C++0x/11 功能?

【问题讨论】:

  • 您要编译的代码是什么?您是否尝试过包含<iostream>? clang 知道在哪里可以找到标准库吗?如果去掉基于范围的 for 循环,代码还能编译吗?

标签: c++ for-loop clang c++11


【解决方案1】:

这里的秘密是 LLVM 2.9 不支持基于范围的 for 循环。该文档对应于 LLVM/Clang 主线。要获得基于范围的 for 循环,请查看主线 SVN 中的 LLVM/Clang:http://clang.llvm.org/get_started.html

libc++ 对 C++'0x ('11!) 库支持很有用,但如果你想在 C++'0x 语言特性之上使用它的功能,你也必须设置它。有关如何设置的信息,请参阅:http://libcxx.llvm.org/

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2011-06-23
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多