3

関数の戻り値をチェックするコードを作成し始めていますが、いくつかのエラーをキャプチャした後の処理方法がわかりません。

たとえば、fgets では次のようになります。

while( fgets( rta, 3, stdin ) == NULL ) {
        printf( "Ocurrio un error al evaluar su respuesta. Intente nuevamente./n" );
}

しかし、puts

エラーが発生すると EOF が返されるので、次のようにします。

if( puts( "Message" ) == EOF ) {
    error handle...
}

問題は、失敗した場合に私がすべきことです。コンソール(これはコンソールアプリです)にメッセージを表示することを考えますが、puts失敗した場合、私のメッセージも失敗します。(私も使用するためputs)。

assertメッセージを表示してアプリを終了するために使用する必要がありますか?

どうもありがとう。

4

2 に答える 2

1

まあ、彼らが言うように、疑いがあれば、疑いはありません。

すべてのケースが説明されていることを確認するなど、規律ある思考を組み込むことは非常に良いことです。しかし、戻り値をどうすればよいかわからない場合は、何もする必要がないことは明らかです。

この決定をコードで伝えるには、式を void にキャストして戻り値を明示的に破棄できます。

(void)puts("");

これにより、戻り値の無視に関する警告メッセージが表示されなくなります。

于 2012-10-09T05:36:08.643 に答える
1

利用できなくなった誰か/何かと通信する必要がある場合を除き、通常、そのような関数の戻り値は無視します。

進行状況または失敗の記録が本当に必要な場合は、ログ ファイルを開いてすべてのメッセージをそこに書き込みます (または syslog などを使用します)。

基本的に、stdio を使用している場合、ある時点で誰かがプログラムをパイプにフックする (例: | less) か、stdout がなくなるようなことをする可能性があります。

printf や puts の戻り値を無視すると lint などのプログラムは文句を言いますが、実際にはこれらの戻り値の 99% は極端な場合を除いて役に立ちません。

于 2012-10-09T04:16:42.370 に答える