-2

私は C で練習するためにこの単純なコードを作成しようとしています。ユーザーに正の数を指定するように求め、それが正かどうかをチェックしてから、正の数だけを返します。

このエラーが発生しています:

positive.c:28:7: warning: implicit declaration of function 'GetInt' is invalid
  in C99 [-Wimplicit-function-declaration]
            n = GetInt();

これは、関数のいずれかを宣言していないか、ライブラリで呼び出していないことを意味すると考えていました。私の知る限り、私はこれをすべて行いました。これが私のコードです:

#include <stdio.h>

int GetPositiveInt(void);

int main(void)
{
    int n = GetPositiveInt();
    printf("Thanks for the %i\n", n);
}


/*This all gets called into the above bit*/
int GetPositiveInt(void)
{
    int n; /*declare the variable*/
    do
    {
        printf("Give me a positive integer: ");
        n = GetInt();
    }
    while (n <= 0);
    return n; /*return variable to above*/
}

なぜこれが私にエラーを与えているのか、誰にもアイデアがありますか?

4

4 に答える 4

2

これは、この関数GetIntが存在しないか、正しいヘッダーを含めるのを忘れたためです。

関数の呼び出しを次のように置き換えることができますGetInt

scanf("%d", &n);
于 2013-10-10T06:18:15.793 に答える
1

宣言していませんGetInt()。コンパイラは、何を返し、どの引数を受け取るかを知りません。C99 では暗黙の宣言は禁止されていました (以前は有効でした - C89 を有効にする場合にのみ警告が生成されます)。

もちろん、宣言だけで実装がない場合は、リンク段階でエラーが発生します。

于 2013-10-10T06:20:28.960 に答える
1

.c ファイルの先頭に含める必要がある CS50 edX クラス用に作成されたライブラリがあります。そうしないと、コンパイラは GetInt() 関数を認識しません。

#include <cs50.h>
于 2014-07-23T20:16:54.220 に答える