2

Visual Studio 2010 (c++) を使用して C でコードを記述し始めました。

#include <stdio.h>
#include <stdlib.h>

int main(){
    printf("test");
    getch();
    return 0;
}

ただし、このコードはライブラリを追加しなくても機能conio.hし、プログラムはそこで一時停止しgetch()ます。エラー識別子 getch();に下線が引かれています。未定義です。

そんなことがあるものか?

4

1 に答える 1

10

C 言語には、関数の「暗黙の宣言」という概念があります。プロトタイプを提供しない場合、コンパイラは関数が次のように宣言されていると想定します。

int getch();

これは、パラメーターに関する情報を指定しない int を返す関数であることを意味します。厳密に言えば、これはエラーではありませんが、警告レベルが十分に高く設定されている場合、多くのコンパイラは警告を発行します。この動作は C99 以降で削除されたため、通常はこれに依存しないようにする必要があります。

ライブラリは引き続きgetch()関数を提供するため、リンク時にシンボルを解決する問題はありません。その結果、 がgetch()実際に を返すという事実によりint、すべてがうまくいきます。

于 2013-04-09T10:29:51.653 に答える