ВНИМАНИЕ: «неявное объявление функции '...' недопустимо в C99» - PullRequest
26 голосов
/ 25 января 2012

Я получаю это предупреждение, когда пытаюсь сравнить компоненты RGB двух UIColors

В файле .h, я объявил этот

 -(int) ColorDiff:(UIColor *) color1 :(UIColor *)color2;

В файле .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));
  }

И затем в том же файле .m я сравниваю 2 UIColors, как этот

 int d= ColorDiff(C1,C2);// I got the warning right here.

Я провел исследование, и люди говорят, что я должен включить файл заголовка.Я сделал это, но не помогло в моем случае.Почему я получаю эту ошибку?

Ответы [ 3 ]

22 голосов
/ 25 января 2012

Это потому, что вы определили свою функцию как метод экземпляра, а не функцию. Есть два решения.

Одним из них является изменение объявления вашего метода на следующее:

int ColorDiff(UIColor *color1, UIColor *color2) {
    // colorDiff's implementation
}

Или вы можете изменить свой вызов на это:

int d = [self ColorDiff:C1:C2];
3 голосов
/ 25 января 2012

Объявление в вашем файле .h не соответствует вашей реализации в вашем файле .m.

, если реализация вашего метода в вашем файле .m выглядит следующим образом:

 - (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(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));
}

чем вы должны объявить это в .h:

- (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(UIColor *)color2; 

и чтобы вызвать его из того же файла .m, используйте:

int d = [self ColorDiffBetweenColorOne:C1 AndColorTwo:C2];
1 голос
/ 05 ноября 2014

В h.file отсутствует прототип!

...