2016-09-04 35 views
-7

メイン関数 "main()"の戻り値を返す方法は?私は、正常に実行されたときにmain関数の戻り値が本当に "0"であるかどうかを確認したいだけです。メイン関数 "main()"の戻り値をC++で取り出す方法は?

ありがとうございました!

+1

'main()'の名前を 'notmain()'に変更します。 'notmain()'を呼び出す新しい 'main()'関数を追加し、それが返す値を出力します。 –

+0

コンパイラではなく戻り値を決定します。また、 'main()'を呼び出すのは、伝統的ではなく、奇妙なものです。 –

+3

シェルからの 'echo $?'は通常あなたによく役立ちます –

答えて

-1

ようこそスタックオーバーフロー!

0の場合は0です。の戻り値を指定するのは自分のです。不明な点がある場合は、コードや問題を追加してください。

0

次の結果が0を返すかどうかテストしたいのですか?

int main() { 
    int rc = doSomething(); 
    return rc; 
} 

あなたはこのようにそれを行うことができます。

int main() { 
    int rc = doSomething(); 
    std::cout << rc << "\n"; // Just print it out before returning 
    return rc; 
} 

しかし、それはあなたがあなたのアプリケーションを実行するところからシェルに戻り値をチェックすると良いでしょう:

UNIX/Linuxの場合(シェル内):

> ./my_app 
> echo $? 
0 
(コマンドプロンプトで)Windowsで

> my_app.exe 
> echo %ERRORLEVEL% 

注Cであなたがmain()への呼び出しをインターセプトするか、自分でそれを呼び出すことは許されません++という。

3.6.1主な機能

機能mainは、プログラム内で使用してはなりません。

したがって、main()呼び出しをラップして戻り値を出力しないでください。それが動作しても、ポータブルではありません(実際にアプリケーションを2回実行することになります)。

+0

"あなたが望むものは不可能です" 'std :: cout << the_return_value; the_return_value;を返します。 – juanchopanza

+0

"C++では、main()への呼び出しを傍受したり、自分で呼び出すことはできません。いいえ、あなたはそれを行うことができます私の答えで私のコードを参照してください –

+0

いいえ、私はmain()内の関数の結果を印刷することを意味しません。すべてのmain()は正常に実行された場合、最後に0を返します。私はこの戻り値 "0"を印刷したいと思います。 – OSUCowboy

-1

unixコマンドを使用して、以前に実行したコマンドの戻り値(この場合はcプログラム)を確認できます。

echo $? 

シェル変数$?前のコマンドの戻りコードです。

How to find the return value of last executed command in UNIX?

あなたがちょうどいいの戻り値の前にCOUT、コード内の値を確認したい場合。

0

mainは、あなた自身で呼び出すことができないため、ほとんどの場合、特別です。それが返す値は、オペレーティングシステムに渡されます。 C++標準では、OSがさまざまな戻り値をどのように扱うかを指定できないため、抽象化が提供されます。return EXIT_SUCCESSを使用して成功を示し、return EXIT_FAILUREを使用して失敗を示すことができます。 (return 0return EXIT_SUCCESSとすることもできます;プログラムのランタイムシステムはこれを正しく処理する必要があります)。マクロEXIT_SUCCESSEXIT_FAILUREの値は、プログラムがコンパイルされたOSに適しています。 0EXIT_SUCCESSの標準値ですが、OSが異なる値を要求することは確かに可能で、EXIT_SUCCESSはそのOSに適切な値を持ちます。したがって、たとえあなたがmainから返された値をチェックできたとしても、OSが成功したプログラムからどのような値を期待しているか分かりません。

関連する問題