“没有以前的功能原型”警告

时间:2011-08-16 09:48:05

标签: iphone ios ipad

我使用shareKit自己编程。

但在FBConnectGlobal中,有一些警告,

NSMutableArray* FBCreateNonRetainingArray() {
  CFArrayCallBacks callbacks = kCFTypeArrayCallBacks;
  callbacks.retain = RetainNoOp;
  callbacks.release = ReleaseNoOp;
  return (NSMutableArray*)CFArrayCreateMutable(nil, 0, &callbacks);
}
像这样的方法,它警告:“没有以前的函数FBCreateNonRetainingArray的原型”

4 个答案:

答案 0 :(得分:62)

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

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

解决了这个问题。

答案 1 :(得分:49)

为了澄清Eric Dchao上面的回答,facebook上有人显然没有在BOOL面前放置“静态”?

无论如何,改变这个

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;
}

为我修好了。

答案 2 :(得分:28)

更新:禁用警告不是一个好方法,请查看@Derek Bredensteiner的回答。

在Xcode 4中,转到项目的Build Settings。搜索“原型”。应该有一个名为“Missing Function Prototypes”的选项;禁用它。

通过here

答案 3 :(得分:7)

全局功能吗?如果仅在当前文件中使用,请添加“静态”。

可能的原因如下:

之前没有`foo'的原型

这意味着GCC找到了一个全局函数定义而没有看到该函数的原型。如果函数在多个文件中使用,那么在某个头文件中应该有一个原型。这可以防止功能及其用途不同步

如果该函数仅用于此文件,请将其设置为静态以保证它永远不会在此文件之外使用并记录它是本地函数