17

昔、私は大学で C と C++ を少しやりましたが、C++ にはあまり注目されませんでした。ここで、C++ に注意を払いたいと思いますが、getch()関数を使用しているときに、以下の警告が表示されます。

警告 C4996: 'getch': このアイテムの POSIX 名は非推奨です。代わりに、ISO C++ 準拠の名前 _getch を使用してください。詳細については、オンライン ヘルプを参照してください。

現在、VS 2005 Express を使用していますが、この警告に対してどうすればよいかわかりません。エラーメッセージまたはキーヒットを必要とする何かのgetch()後に使用する必要があります。printf()

それを手伝ってもらえますか?

4

6 に答える 6

25

Microsoftは、アンダースコアを廃止せずに名前をマークすることを決定しました。これらの名前は、プログラマーが選択できるように予約されているためです。実装固有の拡張機能は、CまたはC ++標準に準拠する場合は、グローバル名前空間でアンダースコアで始まる名前を使用する必要があります。または、POSIX / ANSI /ISOCなどの結合された標準準拠環境としてマークする必要があります。関数は、これらの標準の1つに対応します。

getcwd()についてもこの回答を読んでください。もちろん、物事をよく知っているPJPlaugerによる説明もあります。

ユーザーが入力したキーを待つだけの場合は、を使用しない理由はありませんgetchar。ただし、ユーザーや友人にとっては、より実用的で便利な場合も_getchあります。ただし、これらはCまたはC ++標準で指定されていないため、プログラムの移植性が制限されます。心に留めておきます。

于 2009-05-02T14:57:35.873 に答える
9

C ++に興味があるなら、なぜprintfそしてgetch?代わりにcoutとを使用することを検討してください。cin.get

于 2009-05-02T15:04:46.857 に答える
5

getch() の代わりに _getch() を使用する

于 2013-04-02T19:07:27.240 に答える
4

エラーが示すように、この名前getch()は非推奨であり(Microsoft固有の拡張機能であったため)、_getch()代わりに推奨されます。POSIXがどこに入るのかわかりません。POSIXは定義していませんgetch()が、代わりにISO C標準getchar()で指定されているとおりに含まれています(298ページ、最終標準は無料ではないため、ドラフトにリンクされています)。解決策は、提案どおりに実行して使用するか、標準のCを使用することです。_getch()getchar()

于 2009-05-02T15:05:53.827 に答える
2

なぜこれが必要なのですか?getchar()単一のキャラクターをキャプチャする必要がある場合は、使用してみませんか?

于 2009-05-02T14:56:25.487 に答える