2012-07-10 2 views
7

최근에 Eclipse 3.6에서 Eclipse 3.7으로 변경되었습니다.이 플러그인은 Ubuntu 11.04에서 C++ 개발에 사용하고 있습니다.Eclipse 3.7에서 C++ 편집기의 유형을 확인할 수 없습니다.

버전 3.6에서는 필자가 인덱서에 항상 문제가 있다는 것을 제외하면 큰 문제가 없었습니다. 버전 3.7에서는 해석되지 않은 유형을 오류로 표시하기 시작합니다. 인덱서가 나를 더 싫어하는 것 같아서 내 이클립스는 uint16_t 또는 size_t과 같은 유형을 알지 못합니다.

코드 편집기에서 표시된 오류와 달리 내 컴파일러는 코드 컴파일 및 모든 기호와 유형을 해석 할 때 아무런 문제가 없으므로 IDE 자체에서 문제가되는 것 같습니다.

빨간색 밑줄이 모두 내 코드를 읽을 수 없게 만들기 때문에이 동작을 피할 수있는 방법이 있습니까?

업데이트 : 나는 내가 I32 대상 대신 파워에 대한 건물입니다 때문에 내가 Project Properties/ C/C++ General/ Paths and Symbols

몇 가지 경로를 추가 할 필요가 있음을 발견 된 일부 연구와 데니스의 대답에 좋아

, 나는 단지 /usr/include을 추가 할 수 없습니다. 대신 나는 모든 표준 헤더 (같은 stdint.h)에 대한

/usr/powerpc-linux-gnu/libc/usr/include

를 추가 할 필요가 있었다. 또한 내가 필요한 :

/usr/lib/gcc/powerpc-linux-gnu/4.5.1/include

stdarg.h 위해.

이제 거의 모든 오류가 사라졌습니다. 나에게 여전히 곤란한 유일한 기능은 이고 헤더는 stdio.h입니다. 내가 찾은 헤더 파일 자체가 포함 된 경로 내에 놓여 있습니다. 여전히 나는 Function printf could not be resolved라고하는 오류를 얻습니다. 나는 이것들이 단지 Eclipse에 의해 표시되는 오류라는 것을 다시 한번 주목하고 싶다 - 컴파일 자체는 잘 동작한다. Paths and Symbols 섹션은이 C++ Build/Settings/C++ Includes 섹션 중 경로 등으로 응집

  1. 프로젝트 속성에서 :

    그래서 이것은 실제로 최대 3 개 질문을 던졌습니다. 즉, 해당 섹션 중 하나에 경로를 추가/삭제하면 다른 섹션의 항목에 직접 영향을 미칩니다. C++ Includes이 컴파일러와 직접적으로 엮여 있기 때문에 필자는 왜 컴파일러가 경로로 전달되지 않더라도 컴파일러가 올바른 (그리고 헤더를 찾습니다) 컴파일을 할 수 있는지 궁금합니다. GCC에서 사용하는 표준 경로가 있습니까?

  2. 왜 이클립스에서 printf을 찾지 못합니까? stdio.h 헤더 파일이 포함되어 있고 또한 printf이라는 선언이 포함되어 있습니다. Eclipse 코드 편집기가 왜 그것을 해결할 수 없다고 말합니까?

  3. 왜 헤더 파일이 너무 많이 나뉘어져 있습니까? 다른 Traget (예 : PowerPC)을 만들기 위해 다른 헤더 파일이 필요하다는 것을 알고 있습니다.하지만 GNU GCC가 다른 dir에서이 헤더를 분리하는 이유는 무엇입니까?

답변

3

일반적인 유형의 빨간색 밑줄은 일반적으로 포함 경로에 표준 라이브러리가 없기 때문에 발생합니다. 프로젝트에 포함 된 것을 살펴보십시오. 프로젝트 속성에 포함되어 있습니다. C++ include에 사용중인 컴파일러의 C++ 표준 libs 폴더와 일치하는 항목이 있는지 확인하십시오.

+0

저는 powerpc-linux-gnu-g ++ 컴파일러를 사용하고 있습니다. 내 C++ 빌드 설정에서 나는 또한 포함 경로 ('/ usr/powerpc-linux-gnu/include/C++/4.5.1')를 설정했다. 이 경로는 또한 프로젝트 포함 경로에 추가 ... 불행히도 아무것도 변경되지 않습니다 .. – Toby

+0

'size_t'는 ''에 정의되어 있습니다. 파일에 # 포함하면 빨간색 선이 사라지는 지 확인합니다. 그렇지 않다면'#include '에 밑줄이 그어져 있고 노란색 선이 있는지 확인하십시오. 그 위에 마우스를 가져 가면 찾을 수 없다고 표시되면 포함 설정에 문제가있는 것입니다. 또한 프로젝트의 색인을 다시 작성하십시오. – Dennis

+0

안녕하세요. Dennis, 입력 해 주셔서 감사합니다. 질문을 조금만 업데이트했습니다. 어쩌면 당신이 나를 더 도울 수 있습니다. – Toby

3

동일한 문제를 겪고있는 두 개의 스택 오버 플로우 질문을 밝혀 내고 나서이 문제를 조사한 후 실제로 조사하기에 충분히 성가 시게 한 후 어떻게 수정했는지 제출할 것이라고 생각했습니다.

저는 Fedora를 실행 중이고 성가신 것으로, 실제로는 비어있는/usr/include/linux ....에 stddef.h 파일이 있습니다. 따라서 컴파일러의 stddef.h를 포함 경로에 포함 시켰더라도 인덱서는 실제로이 빈 파일을 파싱했습니다. 그래서 완료 필요한 것은이었다 : 특정 컴파일러와

접두사 당신의 경로 및 기호 목록 (내 경우는 /usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/했다) 경로를 포함 다른 빈 stddef.h가 파싱되는 것을 피하기 위해.

+0

접두사가 중요합니다. 나는 /usr/lib/gcc/x86_64-redhat-linux/4.7.2/include/을 포함 시켰지 만, 맨 아래에 있기 때문에 위로 이동할 수 없다. 다른 항목을 추가하고 그것을 작동 시키려면 맨 위로 이동해야했습니다. 분명히 목록에있는 다른 디렉토리에는 엉망이 된 잘못된 버전이 있습니다. – fchen

0

ARM 컴파일러 (arm-none-eabi, 4.4.1)에서 Eclipse (Mars.1 Release 4.5.1, 빌드 ID : 20150924-1200)를 사용하고 있습니다. 나는 당신과 똑같은 문제가있었습니다. 내 전 경로이었다 : 컴파일러 디렉토리에서 ('고정'접미사) :

D:\test\CodeSourcery\Sourcery G++ Lite\lib\gcc\arm-none-eabi\4.4.1\include 

그럼 내가 또 다른 디렉토리를 포함 발견이

D:\test\CodeSourcery\Sourcery G++ Lite\lib\gcc\arm-none-eabi\4.4.1\include-fixed 

를 고정 내 모든 유형 오 검찰 (예 : uint16_t)에 대한 오류.

관련 문제