2012-05-08 87 views
3

我有一個包含Objective C和C文件混合的項目。在其中一個C頭文件中,我試圖導入complex.h。 xcode中產生連接到NSObjRuntime.h 13個編譯錯誤:在Xcode .c頭文件中導入complex.h頭文件會產生編譯錯誤

NSObjRuntime.h

解析版本 預期標識符或 '('

解析版本 未知類型名稱 '的NSString' ...

更多的編譯錯誤是從NSZone.h產生

它看起來像錯誤來自目標C代碼無法識別在.c文件中我應該con垂直我的C文件到目標C爲了導入complex.h或者是否有更優雅的解決方案?

回答

3

它看起來像錯誤來自客觀C代碼無法識別在.c文件中。

確切地說。

我應該將我的c文件轉換爲目標c以導入complex.h還是有更優雅的解決方案?

在這個例子中沒有必要使用objc。因此,沒有必要將它編譯爲objc。 complex.h不需要或包含objc標題。

你只是不在你的c翻譯中包含objc標題。

如果這包括從前綴頭文件來了,你可以使用:

#if defined(__OBJC__) 
#import <Foundation/Foundation.h> 
#endif 

,如果它通過你已經包括另一頭進口的,你必須考慮你的包括依賴關係。有時候會有不必要的包含,有時候你可以用#if defined(__OBJC__)脫身。

+0

This;麻煩不包括'complex.h';它包含'.c'文件中的'NSObjRuntime.h'。 –

+0

@StephenCanon complex.h不包含'#包括'NSObjRuntime.h - 別的什麼。 – justin

+0

正是我的觀點(和你的)。 –