2012-02-23 1 views
6

AurioTouch 프로젝트에서 내 프로젝트로 코드를 이동하려고합니다.알 수없는 유형 이름 'class'; '클래스'를 의미 했습니까? AurioTouch

#include <AudioToolbox/AudioToolbox.h> 
#include <libkern/OSAtomic.h> 

#include "SpectrumAnalysis.h" 

class FFTBufferManager 
{ 
public: 
    FFTBufferManager(UInt32 inNumberFrames); 
    ~FFTBufferManager(); 

내가 LLVM GCC 4.2 컴파일러를 변경하려고하지만 다른 에러를 많이 제공 : 파일 FFTBufferManager.h에, 예를 들어

Unknown type name 'class'; did you mean 'Class'? 

: 는하지만 많은 오류를 가지고 :

Expected '=', ',', ';', 'asm' or '__attribute__' before 'FFTBufferManager' 

내가 뭘 잘못하고 있니?

+8

'SpectrumAnalysis.h'에서';'를 잊어 버릴 확률이 높습니다. – KillianDS

+0

포함을 제거하면 제대로 작동할까요? 이 파일을 수정하기 전에 해당 파일을 수정하십시오. – Default

+0

SpectrumAnalysis.h가 정확합니다. AurioTouch 프로젝트가 컴파일되어 잘 실행됩니다. 그러나 프로젝트에 파일을 추가하면 많은 오류가 발생합니다. – LordPingvin

답변

8

C++과 Objective-C를 혼합하려면 .mm extension을 사용해야합니다. 그러나 클래스가 C++ (및 C/C++ 헤더 만 포함)이면 일반 .cpp 확장명을 사용할 수 있습니다.

.mm
오브젝티브 C 및 C 코드뿐만 아니라 C++ 코드를 포함 할 수있는이 확장자를 가진 소스 파일입니다. 이 확장은 실제로 Objective-C 코드의 C++ 클래스 또는 기능을 참조하는 경우에만 사용되어야합니다.

+0

.h 파일의 경우 C++ 클래스가 정의되는 위치는 무엇입니까? 어떤 확장 기능을 변경해야합니까? – peetonn

+0

@peetonn .h는 컴파일되지 않으므로 잘됩니다. 또한 .hh 및 .hpp를 자유롭게 사용할 수 있습니다. 나는이 같은 문제의 해결책이 회신 조 대한 – Joe

+0

@Joe 당신이 datil의 솔루션을 제공시겠습니까, 나는 동일하지만 여전히 점점 같은 오류가했다 ! 이 문제를 해결하는 방법을 모르겠습니다. – Developer

관련 문제