警告:"隐含的功能声明'......'在C99中无效"

JHH*_*ang 26 gcc-warning ios

当我试图比较两个UIColors的RGB组件时,我收到了这个警告

在.h文件中,我声明了这一点

 -(int) ColorDiff:(UIColor *) color1 :(UIColor *)color2;
Run Code Online (Sandbox Code Playgroud)

在.m文件中

 - (int) ColorDiff:(UIColor *) color1 :(UIColor *)color2{
   ... //get RGB components from color1& color2
   // compute differences of red, green, and blue values
   CGFloat red   = red1   - red2;
   CGFloat green = green1 - green2;
   CGFloat blue  = blue1  - blue2;

  // return sum of squared differences
  return (abs(red) + abs(green) + abs(blue));
  }
Run Code Online (Sandbox Code Playgroud)

然后在同一个.m文件中,我比较了2个这样的UIColors

 int d= ColorDiff(C1,C2);// I got the warning right here.
Run Code Online (Sandbox Code Playgroud)

我做了研究,人们说我必须包含头文件.我这样做但在我的情况下没有帮助.为什么我收到此错误?

Ric*_*III 22

这是因为您将函数定义为实例方法,而不是函数.有两种解决方案.

其中一个是将您的方法声明更改为:

int ColorDiff(UIColor *color1, UIColor *color2) {
    // colorDiff's implementation
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以将呼叫更改为:

int d = [self ColorDiff:C1:C2];
Run Code Online (Sandbox Code Playgroud)