2

C の学習を始めたばかりで、SmallDevice C コンパイラで CodeBlocks をセットアップした後、学習中の本にあるプログラムのいくつかに取り組み始めました。このエラーを返し続けます。コードは次のとおりです。

#include <stdio.h>
int main()
{
    int num1, num2, sum;
    printf("Enter two integers: \n");
    scanf("%d %d",&num1,&num2);
    sum=num1+num2;
    printf("Sum: %d",sum);
    return(0);
}

それが私に与えているエラーは

Warning 112: Function 'scanf' implicit declaration
error 101: too many parameters

行ってみると、まったく同じことをするように書かれたテキストが見つかりました(まったく同じコードが得られました)。それを配置しても、このエラーが発生します。これは私のコンパイラの問題ですか?

4

3 に答える 3

3

はい、コンパイラまたはインストールに問題があります。コードに構文エラーはありません。

gsamaras@pythagoras:~$ pico Justc25_main.c
gsamaras@pythagoras:~$ gcc Justc25_main.c
gsamaras@pythagoras:~$ 

Werner Henze が述べたように、「Small Device C コンパイラは小型組み込みデバイス用であり、scanf 関数が付属していないようです。」.

于 2015-06-11T13:25:55.443 に答える
0

@jongwareは正しいです。SDCC には scanf の実装がなく、それが警告 112 とそれに続くエラー 101 の理由です。stdio.h ヘッダーと完全なソース コードで scanf を探すことで、これを自分で確認できます。

基本的に、SDCC 開発者はコンパイラがプラットフォームに依存しないことを望んでおり、組み込みデバイスに scanf を実装するには、各プラットフォームに関するハードウェア固有の知識が必要です。たとえば、Amstrad CPC の scanf の実装は、同じ Z80 プロセッサを搭載していても、MSX の実装とは異なります。

対象のプラットフォームによっては、scanf の実装が利用できる場合があります。他のオプションは、プラットフォームに getchar を実装してから、gets を使用することです。

于 2015-10-18T12:07:15.793 に答える