OS: Ubuntu 14.04 (amd64)
g++ version: 4.8.4
Eclipse: Mars, Neon
이클립스(Eclipse)에서 C++2011 문법(std::thread나 향상된 for loop 같은 것)을 쓰려고 하면 빌드 설정에 -std=c++0x 또는 -std=c++11 같은 플래그를 추가해 두어도 정작 에디터에서 계속 syntax error를 표시하는 경우가 있다.
(이클립스 에디터가 C++11 문법에 따라 쓴 std::thread 코드를
unresolved symbol error로 표시하고 있다.)
해결하려면, 프로젝트 이름에 마우스 오른쪽 단추를 누르고 Properties로 가서,
C/C++ General > Preprocessor Include Paths, Macros etc.로 간 다음,
Providers 탭에서 CDT GCC Build-in Compiler Settings를 선택한다.
그리고 하단에 "Use global provider shared between projects" 선택을 해제하고,
Command to get compiler specs 칸에 -std=c++0x 를 추가한다.
또한 순서상 중간 쯤에 와 있는 CDT GCC Build-in Compiler Settings 항목을 Move Up을 이용해서 가장 위로 끌어올린 뒤에 Apply 버튼과 OK 버튼을 누른다.
마지막으로, 이클립스 메뉴에서
Project > C/C++ Index > Re-resolve Unresolved Includes
Project > C/C++ Index > Freshen All Files
Project > C/C++ Index > Rebuild
를 차례대로 눌러 주면 에러로 표시하지 않게 된다.
(C++ 2011 문법의 syntax error가 해결된 이후의 에디터 화면)
<참고자료>
[1] http://stackoverflow.com/questions/17457069/enabling-c11-in-eclipse-juno-kepler-luna-cdt
'Development > C,C++' 카테고리의 다른 글
적합한 데이터 구조를 사용하는 습관: vector와 set (0) | 2018.01.02 |
---|---|
C++ STL: map에서의 해쉬값 처리의 중요성 (0) | 2017.03.31 |
리눅스 C++11에서 what(): Enable multithreading to use std::thread: Operation not permitted 에러 해결 (0) | 2016.10.26 |
Buffer overflow 발생 사례: strcat (2) | 2014.06.08 |
char array와 char pointer를 이용한 call by reference (0) | 2013.11.26 |