web-dev-qa-db-ja.com

Xcode-警告:C99では、関数の暗黙的な宣言は無効です

警告の取得:関数 'Fibonacci'の暗黙的な宣言は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*/
65
CodingUpStream

関数は、呼び出される前に宣言する必要があります。これはさまざまな方法で実行できます。

  • ヘッダーにプロトタイプを書き留めます
    関数を複数のソースファイルから呼び出すことができる場合に使用します。プロトタイプを書くだけです
    int Fibonacci(int number);
    .hファイル(例:myfunctions.h)にダウンしてから、Cコードで#include "myfunctions.h"にダウンします。

  • 初めて呼び出される前に関数を移動する
    これは、関数を書き留めることを意味します
    int Fibonacci(int number){..}
    main()関数の前

  • 初めて呼び出される前に関数を明示的に宣言する
    これは上記のフレーバーの組み合わせです。main()関数の前にCファイルに関数のプロトタイプを入力します

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

71
eckes

コンパイラは、使用する前に関数を知りたい

呼び出す前に関数を宣言するだけです

#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)
{
//…
23
vikingosegundo

同じ警告が表示されます(アプリをビルドできません)。 C functionObjective-C's .m fileを追加すると、.hファイルで宣言するのを忘れていました。

0
lee

関数を適切に呼び出す必要があります。 like-フィボナッチ:入力

0