2010-06-15 2 views
3

방금 ​​이전 프로젝트를 선택했는데 다음 오류의 의미가 확실하지 않습니다.이 컴파일 오류 도움말

g++ -o BufferedReader.o -c -g -Wall -std=c++0x -I/usr/include/xmms2 -Ijsoncpp/include/json/ -fopenmp -I/usr/include/ImageMagick -I/usr/include/xmms2 -I/usr/include/libvisual-0.4 -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -DQT_SHARED -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtScript BufferedReader.cpp 
In file included from BufferedReader.cpp:23: 
/usr/include/string.h:36:42: error: missing binary operator before token "(" 
In file included from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/cwchar:47, 
       from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/bits/postypes.h:42, 
       from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/iosfwd:42, 
       from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/ios:39, 
       from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/istream:40, 
       from /usr/lib/gcc/i686-redhat-linux/4.4.3/../../../../include/c++/4.4.3/sstream:39, 
       from BufferedReader.cpp:24: 

BufferedReader.cpp의 라인 24는 #include <string.h>입니다. 나는 단지 <string>와 그것을 시도했지만 똑같은 얻을. 어떤 단서?

여기에 정의되지 않은 그 __GNUC_PREREQ을 의미 하는가 string.h

/* Tell the caller that we provide correct C++ prototypes. */ 
#if defined __cplusplus && __GNUC_PREREQ (4, 4) //line 36 
# define __CORRECT_ISO_CPP_STRING_H_PROTO 
#endif 

에서 코드의 조각이야?

편집 :

-Ijsoncpp/include/json/Ijsoncpp/include에이 오류를 중지 변경. 나는 <json/json.h>을 포함하고있는 것으로 나타났습니다.

나는 JsonGlib로 전환하려고하고 있는데, 이것이 프로젝트를 다시 시작한 이유입니다. 모든 것이 좋습니다. :)

+1

** @ Scott ** 가이드 라인을 따르려면 솔루션을 실제 답변으로 게시 한 다음 동의하십시오. 질문에 솔루션을 편집하면 사용자가 수락 된 대답에 대해 질문을 생략하는 것이 더 어려워집니다. –

답변

3

시도 #include <cstring>.

+0

cstring에 string.h가 포함 된 것처럼 보이며 오류가 계속 발생합니다. – Scott

+0

@Scott, 그렇지만'C++ '을하고 있다면'string.h' 대신에'cstring'을 포함시키는 것이 좋습니다. – ereOn

+0

@ereOn : 확인. 감사. – Scott

4

이와 같은 이상한 오류는 포함 파일에서 포함하기 전에 발생합니다. 이것은 종종 헤더 파일의 클래스가 세미콜론 (;)으로 끝나지 않을 때 발생합니다. BufferedReader.cpp의 22 번째 라인에 포함되어있는 파일을 확인하고 그 파일의 구문 오류를 마지막으로 확인하십시오.

4

이 특수한 동작의 이유는 아마도 파일 이름 충돌 일 것입니다 : string.h<features.h>을 포함하며 보통 /usr/include/features.h 또는 그와 비슷한 것으로 해석되어야합니다. 그러나 json/ dir에는 features.h도 포함되어 있으므로 포함 경로에 처음 오면 그 파일이 대신 포함되지만 string.h 필요와는 다른 용도로 사용됩니다.