2010-12-16 54 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”。