【发布时间】:2014-02-20 05:33:32
【问题描述】:
最近更新了 clang(以及 xcode 和开发者工具)并运行了一个简单的程序来查看它是否支持 c++11。看起来像这样:
#include <iostream>
using namespace std;
int main()
{
string my_array[5] = {"one", "two", "three"};
for (string &x : my_array)
cout << x << endl;
}
像这样在终端编译:
clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp
并收到此警告:
main.cpp:17:20: warning: range-based for loop is incompatible with C++98
[-Wc++98-compat]
for (string &x : my_array)
但它仍会生成可执行文件并按预期运行。为什么会产生这个错误?
【问题讨论】:
-
这不是错误,是警告,而且似乎是因为默认启用了
-Wc++98-compat而产生的。尝试将-Wno-c++98-compat添加到您的编译器选项以禁用该类警告。 -
根据 clang.llvm.org/cxx_status.html 基于范围的 for 循环应该从 3.0 开始支持,我认为应该从 XCode 4.2 开始安装
-
@JoachimIsaksson,我敢打赌它包含在
-Weverything中,而不是默认启用。 -
@chris 是的,我确认是的,我第一次阅读时错过了
-Weverything,现在编辑为时已晚:)