2013-04-06 16 views
53

警告:C99では暗黙の関数 'Fibonacci'の宣言が無効です。 どうしたの?Xcode - 警告:C99で関数の暗黙の宣言が無効です

#include <stdio.h> 

int main(int argc, const char * argv[]) 
{ 
    int input; 
    printf("Please give me a number : "); 
    scanf("%d", &input); 
    getchar(); 
    printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!! 

}/* main */ 

int Fibonacci(int number) 
{ 
    if(number<=1){ 
     return number; 
    }else{ 
     int F = 0; 
     int VV = 0; 
     int V = 1; 
     for (int I=2; I<=getal; I++) { 
      F = VV+V; 
      VV = V; 
      V = F; 
     } 
     return F; 
    } 
}/*Fibonacci*/ 

答えて

57

それを呼び出す前に、

だけで関数を宣言、それを使用する前に、機能を知りたい、それが呼ばなってき前に宣言する必要があります。これは、様々な方法で行うことができます。

  • は、関数が複数のソースファイルから呼び出し可能なものでなければならない場合は、これを使用し、ヘッダ
    でプロトタイプを書き留めます。プロトタイプ.h(たとえばmyfunctions.h)にプロトタイプ
    int Fibonacci(int number);
    を、次に#include "myfunctions.h"をCコードで書きます。それが最初に呼ばなってき前

  • する。これは意味、それは初めて
    呼ばなっています前に、明示的に関数を宣言あなたのmain()機能

  • 前に機能
    int Fibonacci(int number){..}
    を書き留め
    機能を移動

    これは上記の味の組み合わせです:Cファイルの関数のプロトタイプを入力してからmain()関数

追加の注意:機能int Fibonacci(int number)が実装されているファイルでのみ使用される場合は、その翻訳単位でのみ表示されるようにstaticと宣言されます。

+1

@Cupidvogel:新しい質問がある場合は、新しい質問をしてください。 – eckes

+4

これは新しい問題を正当化するには微妙すぎたので、私はここで尋ねました。 – SexyBeast

+0

なぜヘッダに 'int Fibonacci(int number);'と入力する必要がありますか?私は 'intフィボナッチ(int);'と思うほうがいい? – kyle

22

コンパイラが、それはあなたが機能

#include <stdio.h> 

int Fibonacci(int number); //now the compiler knows, what the signature looks like. this is all it needs for now 

int main(int argc, const char * argv[]) 
{ 
    int input; 
    printf("Please give me a number : "); 
    scanf("%d", &input); 
    getchar(); 
    printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!! 

}/* main */ 

int Fibonacci(int number) 
{ 
//… 
+0

多くのthx! C#での経験がありましたが、すべて同じではありません。 – CodingUpStream

0

私は同じ警告を表示しています(私のアプリはビルドできません)。 Objective-C's .m fileC functionを追加すると、.hというファイルでそれを忘れてしまった。

0

は、関数を正しく呼び出す必要があります。フィボナッチ:入力

関連する問題