2010-09-13 96 views
2

我正在嘗試製作一個簡單的Objective-C++應用程序。我所有的代碼都編譯好了,包括在Objective-C類中使用C++,直到我嘗試向混合中添加一個C++類。我創建了一個簡單的C++類:Xcode中的Objective-C++和.cpp文件

Test.h

class Test { 

}; 

,幷包含在Objective-C類此文件(帶有擴展名.mm),我得到下面的生成錯誤:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test' 

顯然我在這裏錯過了一些簡單的概念。我會欣賞一些啓發。

回答

2

helixed的回答不會幫助,你的類將被預處理器,如果__cplusplus不確定的只是skiped。

大部分情況下,您嘗試從* .m文件中包含C++類,嘗試將其重命名爲* .mm。 這解決了我身邊的同樣的問題。

+0

你說得對。我忘了提及我將文件擴展名更改爲.mm。謝謝回覆。 – LandonSchropp 2010-09-15 19:47:28

+0

(經過編輯,以防止對閱讀不好的人進行復制粘貼。) – 2011-01-17 15:22:02

2

那麼,在Apple's Documentation上掃描更密切後,它看起來像在頭文件中使用__cplusplus預處理器標誌的答案。下面的代碼看起來像現在:

#ifdef __cplusplus 

class Test { 

}; 

#endif 
2

應該不需要預處理命令是:

#ifdef __cplusplus 
+0

是的,你說得對。我正在編輯我的答案是否正確。 – LandonSchropp 2011-01-17 23:06:37

+0

@帕維爾的答案在這裏是正確的。忽略我的。 – LandonSchropp 2015-01-24 20:30:19

0

在Xcode中6有以下幾個選項:

Apple LLVM 6.0 - Language -> Compile Sources As 

您可以設置到Objective-C++,然後將文件擴展名不沒關係。如果您正在跨平臺工作並需要使用其他文件擴展名,則此功能特別有用。