“以前没有function的原型”警告

我使用shareKit来自己编程。

但是在FBConnectGlobal,有一些警告,

NSMutableArray* FBCreateNonRetainingArray() { CFArrayCallBacks callbacks = kCFTypeArrayCallBacks; callbacks.retain = RetainNoOp; callbacks.release = ReleaseNoOp; return (NSMutableArray*)CFArrayCreateMutable(nil, 0, &callbacks); } 

像这个方法一样,它警告:“以前的函数FBCreateNonRetainingArray没有原型”

为了澄清Eric Dchao的回答,有人在facebook上显然没有在BOOL前面加上“static”

无论如何,从这个变化

 BOOL FBIsDeviceIPad() { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { return YES; } #endif return NO; } 

对此

 static BOOL FBIsDeviceIPad() { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { return YES; } #endif return NO; } 

给我修好了

根据c标准,将原型声明为

 NSMutableArray* FBCreateNonRetainingArray(void); // ---------------> ^^^^ // Yes, with the void as the parameter 

解决了这个问题。

更新 :禁用警告不是一个好的解决scheme,请检查@Derek Bredensteiner的答案。

在Xcode 4中,转到您的项目的生成设置。 search“原型”。 应该有一个叫做“失踪函数原型”的选项; 禁用它。

通过这里

这是一个全球性的function吗? 如果仅在当前文件中使用,则添加“ static ”。

可能的原因如下:

没有以前的'foo'原型

这意味着GCCfind了一个全局函数定义,而没有看到函数的原型。 如果一个函数在多个文件中使用,那么在某个头文件中应该有一个原型。 这使function和他们的用途不同步

如果该函数仅用于此文件,则使其为静态,以确保它永远不会在此文件之外使用,并logging它是本地函数