편집 : 이것은 실제로 Eclipse Kepler에만 국한되지 않습니다. Eclipse Juno에도 동일한 프로세스를 사용해야했습니다. 문제는 동일한 질문에 답하는 다른 게시물에 누락 된 단계가있는 것 같습니다.
C ++ 용 Eclipse Kepler를 사용하고 있는데 C ++ 11을 사용하려고하는데 오류가 발생합니다. 컴파일 할 때 오류가 발생합니다.
오류 : C ++ 98 모드에서는 범위 기반 for 루프가 허용되지 않습니다.
게시물의 지침을 따랐습니다.
Eclipse CDT C ++ 11 / C ++ 0x 지원
Eclipse Juno에 제공된 솔루션이 작동하지 않습니다.
다른 의견은 일식을 다시 시작하고 청소 및 재건을 제안했습니다. 그것은 차이를 만들지 않았습니다.
답변
해야 할 두 가지가 있습니다. 먼저 컴파일러를 설정 한 다음 CDT의 언어 프로세서를 설정해야합니다. 사용중인 컴파일러를 언급하지 않았으므로 GCC라고 가정하지만 단계는 다른 컴파일러와 비슷합니다. (물론 C ++ 11을 지원하는 컴파일러가 필요합니다.)
컴파일러 설정은 매우 간단합니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.
- C / C ++ 빌드에서 설정을 클릭합니다.
- GCC C ++ 컴파일러에서 기타를 클릭합니다.
- 기타 플래그 상자에서 토큰 목록에 “-std = c ++ 11″을 추가합니다.
- 적용 및 확인을 클릭하십시오.
이 시점에서 프로젝트를 다시 빌드하고 실행할 수 있어야합니다. 그러나 CDT는 여전히 C ++ 11 포함 오류를 표시 할 수 있습니다. 이를 해결할 수있는 방법은 다음과 같습니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다.
- C / C ++ 일반에서 “전 처리기 포함 경로, 매크로”를 클릭합니다.
- 공급자 탭을 선택합니다.
- 목록에 “GCC Built in Compiler Settings”와 같은 항목이 있어야합니다. 이 항목을 선택하십시오.
- “글로벌 공급자 사용 …”옵션을 선택 취소합니다.
- 목록 아래에 “컴파일러 사양을 가져 오는 명령”이라는 상자가 있습니다. 여기에 “-std = c ++ 0x”를 추가합니다.
- 오른쪽의 ‘위로 이동’버튼을 사용하여 목록 상단의 “GCC 내장 컴파일러 설정”공급자를 이동합니다.
- 적용을 클릭 한 다음 확인을 클릭하십시오.
- Eclipse 작업 공간으로 돌아가서 프로젝트 메뉴, C / C ++ 색인을 선택하고 “해결되지 않은 포함 해결”을 클릭하십시오.
답변
Eclipse Kepler 서비스 릴리스 1에서 C ++ 11 지원 (빌드 ID : 20130919-0819)
최신 릴리스 Eclipse Kepler SR1에서는 -std = c ++ 11 만 추가하면됩니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭하십시오.
- 로 이동 한 C / C ++ 일반 및 처리기는 경로, 매크로 등 포함
- 공급자 탭을 선택합니다.
- 추가 -std = C (11) ++ 에 대한 명령은 컴파일러 사양을 얻을 수 있습니다 :
- 변경 사항을 적용하면 인덱스가 자동으로 생성됩니다.
“명령은 컴파일러 사양을 얻을 수 있습니다” – 라인이 같아야합니다 :
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
답변
CDT 8.3 ( Kepler 업데이트로 사용 가능 )부터 빌드 설정에 새로운 언어 옵션이 있습니다.
http://wiki.eclipse.org/CDT/User/NewIn83#Build
답변
Eclipse Kepler를 사용하고 수정하기 위해 다음을 수행했습니다.
1-Project >> Proprietes >> C / C ++ Build :: 설정을 마우스 오른쪽 버튼으로 클릭
2-GCC G ++ 컴파일러로 이동 >> 기타 >> 기타 플래그
i then added -std=c++11
hit apply and ok
내 문제가 해결되었습니다!
도움이 되었기를 바랍니다.
답변
여기서 eclipse indigo 및 cdt 8.0.2를 실행합니다. 나는 모든 가이드를 따랐지만 std :: unique_ptr과 같은 것을 찾기 위해 전처리기를 직접 정의해야했습니다. 포함 파일 “메모리”가이를 확인합니다. 프로젝트 속성의 “C ++ 일반”에있는 “경로 및 기호”아래의 “기호”탭에서 __cplusplus를 201103L로 설정합니다.
답변
프로젝트 속성-> C / C ++ 빌드-> 설정-> 도구 설정 (GCC C ++ 컴파일러-> Dialect)에 방언 플래그 “-std = c ++ 11″을 추가하면 위에서 언급 한 설정을 제외하고 Eclipse Kepler의 문제가 해결되었습니다.
답변
Eclipse Luna를 사용하고 있으며 C / C ++ 빌드-> 설정에 “도구 설정”이 없습니다. 나는 DID 추가 -std = C ++에서 컴파일러 사양 명령 라인에 11 “C / C ++ 일반 -> 처리기가 포함 -> 공급자”제안. 하지만 여전히 emplace ()를 해결하는 인덱서의 능력을 만족시키지 못했습니다.
그래서 헤더 파일에서 emplace 함수가 __cplusplus> = 201103L에 종속되어 있음을 발견했습니다. 그래서 방금 전 처리기 기호 “__cplusplus”를 추가하고 값 201103을 지정했습니다.
약간 hackish하지만 인덱서는 행복합니다. (그리고 makefile은 Eclipse 프로젝트가 아닌 내 빌드 플래그를 정의합니다)
