我有一个项目可以在 Xcode 4.6.3 上构建并正常运行。 但它不适用于 Xcode 5.1.1。
这是我遇到的独特错误,一百次了。
“ISO C++11 不允许访问声明;请改用 using 声明”。
基本上它希望我从:
typedef Something<MType>::Index Index; Something<MType>::N;
至
typedef Something<MType>::Index Index; using Something<MType>::N;
为什么会这样?
如果我按照 Xcode 所说的那样“解决它”,则最终应用程序的行为是随机的。
是否可以像 4.6.3 一样在 Xcode 5.1.1 上构建此项目? (换句话说:更改项目设置,但保持代码完整)
AFAIS,两个 Xcode 版本的 C++ 标志具有相同的值。
C 语言方言 = GNU99 [-std=gnu99]
C++ 语言方言 = GNU++11 [-std=gnu++11]
C++标准库=libc++(支持C++11的LLVM C++标准库)
最佳答案
看起来像是对编译器的故意更改:
http://llvm.org/viewvc/llvm-project?view=revision&revision=183882
标准机构表示:“访问声明在 1998 年标准中已被弃用,并且与使用声明相比没有任何好处。它们应该在 C++0x 中删除。”
而且我无论如何也找不到恢复到较旧的(不符合标准的)C++11 行为的方法。我一半期待这能起作用:
clang -std=c++0x
但是,事实并非如此。你会得到同样的错误。
包括使用看起来是正确的修复方法。我刚刚在这里做了一些测试,它的作用正如 jar 头上所说的那样。
可能不是您想听到的,但我认为您应该研究一下为什么当您使用 using 指令时代码的行为是随机的。
关于c++ - xcode 5.1.1 提示 : ISO C++11 does not allow access declarations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641552/