2014-07-08 4 views
2

Xcode 4.6.3에서 올바르게 빌드되고 실행되는 프로젝트가 있습니다. 그러나 Xcode 5.1.1에는 포함되어 있지 않습니다.xcode 5.1.1 불만 : ISO C++ 11에서 액세스 선언을 허용하지 않습니다.

이것은 내가 얻는 고유 한 오류입니다.

"ISO C++ 11은 액세스 선언을 허용하지 않으며 선언을 대신 사용하십시오".

typedef Something<MType>::Index Index;  
Something<MType>::N; 

typedef Something<MType>::Index Index;  
using Something<MType>::N; 

가 왜

에 :

은 기본적으로 그것은 나를에서 가고 싶어?

Xcode에서 말한대로 "해결"하면 최종 앱이 무작위로 작동합니다.

Xcode 5.1.1에서 4.6.3처럼이 프로젝트를 빌드 할 수 있습니까? (즉, 프로젝트 설정을 변경하면서 코드를 그대로 유지)

AFAIS, C++ 플래그는 두 Xcode 버전 모두에 대해 동일한 값을 갖습니다. C++ 11 지원
C 언어 방언 = GNU99 [-std = gnu99]
C++ 언어 방언 = GNU ++ 11 ++ GNU -std = 11
C++ 표준 라이브러리의 libC++ = (LLVM C++ 표준 라이브러리)

답변

4

그것은 컴파일러에 대한 의도적 인 변화를 다음과 같습니다

http://llvm.org/viewvc/llvm-project?view=revision&revision=183882

표준의 몸은 말한다. "액세스 선언은 1998 년 기준으로 사용되지 않으며-선언을 사용하여 아무런 이득이되지 않았다 그들은해야한다 C++ 0x에서 제거되었습니다. "

어쨌든 이전의 (비표준 호환) C++ 11 동작으로 되돌릴 수 없습니다. 나는 절반이 작업을 기다리고 있었다 :

그 소리의 -std = C + +0

그러나, 그것은하지 않습니다. 동일한 오류가 발생합니다.

사용하는 것을 포함하면 올바른 수정 사항처럼 보입니다. 나는 방금 여기에서 몇 가지 테스트를 해봤 다. 주석에서 말하는 것을 수행한다.

아마도 당신이 듣고 싶은 것은 아니지만, using 지시문을 사용할 때 코드가 무작위로 행동하는 이유를 조사해야한다고 생각합니다.

+0

+1 특히 "* 나는 using 지시어를 사용할 때 코드가 무작위로 행동하는 이유를 알아야한다고 생각합니다. *" – ildjarn

관련 문제