0

重複の可能性:
voidmainとintmainの違いは?

了解しました。流血のコンパイラを使用しています。最初に注意する必要があるのは、まったくの初心者に2001年版のC ++を使用していることです。この本の有効性に影響を与える、2001年以降のC ++への変更はありますか?phpにはphp5があり、現在はphp6であることがわかっているので、尋ねますが、C++03は見たことがありません。

さて、私が尋ねた理由で、このコードでは、

void main (void)

なぜ引数を無効にしたいのですか?これは何をしますか。

しかしvoid main (void)、コンパイラでinを実行すると、mainの前に「int」が必要であると表示されます。したがって、「void」メイン(void)を持つことはできません。

また、コードが実行されると、「cin」がない限り、プログラムは閉じます。これは正常な動作ですか、プログラムの最後にcinを作成する以外に、これを停止するためのより良い方法はありますか?

4

2 に答える 2

8

その本を燃やしなさい。C ++標準(最新またはvoid main古い)に準拠していないだけでなく、の代わりにパラメーターのない関数を宣言することは、C++では推奨されないCイディオムです。このサンプルから、私はその本に他にどんな恐怖が含まれているのかを考えると震えます。(void)()

コンソールウィンドウが閉じる問題は、プログラムの内容とはまったく関係ありません。Windowsには、コンソールプログラムを直接起動すると、プログラムの終了時にコンソールウィンドウが自動的に閉じるという動作があります。これを回避するには、自分でコンソールウィンドウを開き、その中からプログラムを実行します。コンソールウィンドウは、必要な限り開いたままになります。(そして、ウィンドウを開いたままにするために、プログラムの最後に余分なダミー入力または「一時停止」呼び出しを追加するという残念ながら一般的な方法を使用しないでください。特定の方法を補うためにプログラムにコードを追加しないでくださいあなたはたまたまそれを起動しているのです。正しい方法で起動し、貧弱なコードをそのままにしておいてください。)

于 2010-06-09T20:53:33.507 に答える
0

2001年以降に行われたのは、C ++コンパイラへの変更です。これは、C ++が受け入れる前に、標準にどの程度準拠している必要があるかについて、全体として非常に慎重です。たとえば、gccは2.95程度から4.4.2になりました。以前のコンパイラでは、適切なC ++ではないいくつかの古いC-ismと同様に、この形式のmainを使用してスライドできる場合がありますが、この場合に変更されるのは言語ではありません(少なくとも標準の範囲内では)。

そうは言っても、C ++は変更されており、変更されていますが、まだ公式の標準レベルではありません。さまざまなコンパイラが、さまざまな範囲でこれらの変更をサポートします。あなたがそれらの影響を受ける可能性は低いと思いますが、とにかくそれらを知っておくとよいでしょう。見る:

プログラムを終了する方法に関しては。単純な「return0;」をお勧めします。終了するポイントでmain–または、エラーで終了する場合は、0以外の終了コードを使用します。個人的には悪いスタイルだと思いますが、リターンは省略できますし、多くの例でこれを行っています。

cinアプリケーションを終了する前に一時停止するために使用しているとのことですが、これは、一般的にC ++アプリには必要ありません。これは、アプリを現在の方法で実行するための便利な機能です。例としては問題ありませんが、実際のアプリケーションでは絶対に避けたいと思います。

于 2010-06-09T21:19:56.143 に答える