Objective-c中的Extern C函数

时间:2009-06-13 06:41:13

标签: c objective-c iphone-sdk-3.0 extern

我开发iPhone应用程序,在更新到sdk 3.0后,我在链接时遇到CFWriteStreamCreateWithFTPURL错误。这是我调用以获取错误的代码。

streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite);

我有一个想法,它可以使用extern“C”来解决,但在使用Google搜索后,我还没有找到解决问题的方法。有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:9)

extern“C”可能会成功。我可以通过在实现和头文件声明周围做这样的事情来获得C函数来编译和链接。这是一个简单的例子:



#if __cplusplus
extern "C" {
#endif

/// converts a degree value to radians
double DegreesToRadians(double degrees);

/// converts radian value to degrees
double RadiansToDegrees(double radians);


#if __cplusplus
}   // Extern C
#endif


实施档案:


#import "Math.h"

#if __cplusplus
extern "C" {
#endif


double DegreesToRadians(double degrees) {return degrees * M_PI / 180;};
double RadiansToDegrees(double radians) {return radians * 180/M_PI;};


#if __cplusplus
} //Extern C
#endif

答案 1 :(得分:3)

您永远不必在Objective-C项目中使用extern "C"。这是因为Objective-C是C的严格超集。