2009-10-25 4 views
0

내 아이폰 프로젝트에 일부 C++ 코드를 포함하기 위해 노력하고있어 나는 다음과 같은 컴파일러 오류 받고 있어요 :컴파일러 오류 ++ 아이폰 프로젝트에서 코드

"오류 : 전에 예상 초기화 '를 <' 토큰 "이 코드 구문에서

:

엑스 코드 컴파일러가 유효한 C++ 구문으로 이것을 인식하지 않는 것 같습니다
template<typename T, P_UINT_32 BEG, bool OQ, bool OVR, bool DBG> 
    P_UINT_32 EKType<T, BEG, OQ, OVR, DBG>::getSizeX() const { 
    return n; 
    } 

. .h 및 .mm으로 C++ 파일의 이름을 지정했으며 sourcecode.cpp.h 및 sourcecode.cpp.cpp에 파일 유형을 설정했습니다.

누구나 내가 왜 그런지 알 수 있습니다. 이 오류?

+0

오류가 발생한 줄은 무엇입니까? 귀하의 제안에 감사드립니다. –

답변

1

아마도 헤더가 .M 파일 어딘가에 포함되어있을 것입니다.. 이 모든 것들을 어떻게 가져올 수 있는지는 놀랍습니다. 따라서 .M 파일의은 모두 .MM으로 이름이 변경되었습니다.

+0

. 모든 .m 파일의 이름을 .mm으로 변경했지만 여전히 동일한 오류가 발생합니다. –

+0

빌드 로그를보아야합니다 (Shift + Cmd + B). 오류가 발견 될 때 어떤 파일이 컴파일되고 있는지 살펴보십시오 (오류를 두 번 클릭 할 때 열리는 파일이 아닌). 그런 다음 포함되지 않은 MM 파일이 컴파일되고 있는지 확인하기 위해 포함 체인을 살펴보십시오. –

+0

감사합니다. 그래서, 빌드 로그와 그 시간에 컴파일되는 파일을보고 있는데, 오류는 .cpp 파일입니다. 이 파일에는 .h (C++)가 포함되어 있습니다. 당신이 포함 사슬로 뭔가 다른 것을 의미하지 않는다면? –

1

파일에 Objective-C와 C++가 모두 포함되어 있으면 .mm의 이름을 지정하면됩니다. 파일은 C++가 포함되어있는 경우 파일이 ObjC와 C++의 혼합 인 경우

, 확장자가 cpp를

을 가져야한다, 그것은 확장 .mm을 가지고 있으며 그 형태가 sourcecode.cpp로 설정해야 .objcpp

+0

예, 감사합니다. 나는 그들을 .cpp로 바꿨지 만 아무런 효과가 없었다. –

0

컴파일하려는 소스 파일에 EKType 클래스 (또는 구조체) 선언과 선언이 포함되어 있습니까? P_UINT_32?

컴파일러가 EKType 또는 P_UINT_32을 인식하지 못하면 비슷한 오류가 발생할 것이라고 생각합니다.