2010-12-16 59 views
0

我有一個C++函數,我從目標CI調用需要通過引用傳遞變量C++函數。但我在xcode中得到以下錯誤 - 「預期';',' ,」或'前 'foo.h中&' 令牌」傳遞基準數據類型在目標C參考引用

函數聲明中的 「foo.h中」 在test_viewcontroller.m

double UTM_x; 
double UTM_y; 
UTMzone = [[NSString alloc] init];  
UTMzone = (NSString *) LLtoUTM(latitude,longitude,UTM_y,UTM_x); 
#ifdef __cplusplus 

extern "C" 
{ 
#endif 

NSString * LLtoUTM(double Lat,double Long,double &UTMNorthing, double &UTMEasting); 

#ifdef __cplusplus 
} 
#endif 

函數調用)誰能告訴我什麼是錯的?

回答

0

將文件更改爲test_viewcontroller.mm。

你告訴它編譯爲一個Objective-C文件,它不理解引用。 '.mm'表示Objective-C++,它可以像你試圖做的那樣將Obj-C和C++混合在一起。

+0

@Joshua - 我試過。但它影響我在test_viewcontroller.m中編寫的其他obj-C代碼(我得到50個錯誤,我沒有耐心去調試它)。是否有任何與C++等價的pass在目標c中引用? – Janani 2010-12-16 01:49:50

+0

除非你做了一些棘手的事情,否則你不應該犯錯......但最接近的是你的標準C傳遞地址並在另一側傳遞它的地址 – 2010-12-16 01:52:09

+0

在另一個說明中,[[NSString alloc] autorelease];是完全錯誤的。 alloc/init永遠不應該分開。 – 2010-12-16 01:53:17

0

你根本無法在普通的Objective-C中做到這一點 - 因爲C中不存在引用。它們是C++特性。所以你必須使用Objective-C++,它基本上意味着將Objective-C文件的擴展名改爲「.mm」。