2016-12-31 14 views
-5
#include<stdio.h> 
void main() 
{ 
    char name[20]; 
    printf("Enter your name : "); 
    scanf("%s",&name); 
    printf("your name is %s\n",name); 
    getch(); 
} 

なぜDevC++コンパイラはgetch()を宣言するように頼んでいますか?getch()関数の宣言

+0

あなたのコードで 'gets'関数はどこですか?そして、これを尋ねる前に 'getch 'が何であるかを調べましたか? –

+0

[C++ 11](https://en.wikipedia.org/wiki/C%2B%2B11)(少なくとも)以前の標準ではありません。 http://stroustrup.com/Programming/を読んで、最近の[GCC](http://gcc.gnu.org/)や[Clang/LLVM](http:// clang .llvm.org /)であり、どちらも[フリーソフトウェア](https://en.wikipedia.org/wiki/Free_software)コンパイラです)。 –

+0

コードが完全にCの場合、なぜこのタグがC++ですか? –

答えて

2

getchは、標準化された機能ではありませんので。したがって、stdio.hにはありません。プラットフォームによっては、conio.hで定義されています。コンパイラは、使用する前に宣言がgetchに見えないため、不平を言っています。

しかし、あなたは移植をしたい場合は、標準機能にあなたの簡単なプログラムを制限する必要があります。

stdio.h同等のgetcharです。

私はまた、あなたのプログラムが慣用的ではないことを追加したいと思います。 C++コンパイラでコンパイルされているのはです。

+0

'getch()'と 'getchar()'には違いがあります。後者は戻りキーを使用する必要があります。 'getch()'はAFAIKしません。 –

+0

@JonathanLeffler - 真。しかし、OPの目的は、ユーザの「任意のキー」を待ってプログラムを一時停止することです。私は彼らが同等だと思う。 – StoryTeller

1

まあ、それは非常に簡単です...あなたは機能を使用しようとしているが、あなたはその署名が何であるかをコンパイラに語っていません。両方getch()getche()機能がconio.hヘッダで宣言されているので、コンパイラは、関数を宣言しませ文句。要するに、あなたが追加する必要があります。

#include <conio.h> 

もう一つは、あなたが言ったので、あなたがDEVC++を使用していたということです、DEVC++は、右のコンソールが終了する前に、あなたのプログラムを一時停止しないようgetch()機能を使用する必要はありません。