by
Anonymous Coward
on 2022年03月24日 18時19分
(#4220905)
C11 5.1.2.2.3/1
If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument;
C11 7.22.4.4/5
Finally, control is returned to the host environment. If the value of status is zero or EXIT_SUCCESS, an implementation-defined form of the status successful termination is returned
Hello WorldというよりC処理系の問題では? (スコア:0)
戻り値出力のときのエラーを正しく返すのはC処理系の役目であって、それが正しく返さないんだからHello Worldプログラムであろうがなんだろうがエラーをキャッチできなければどうしようもないよね
Re: (スコア:0)
処理系がmainの戻り値を無視して勝手に終了コード変えていいの?
Re:Hello WorldというよりC処理系の問題では? (スコア:4, 参考になる)
C11 5.1.2.2.3/1
C11 7.22.4.4/5
だから、規格適合の処理系はmainの戻り値が0かEXIT_SUCCESSなら勝手に終了ステータスを失敗にしてはならない。
Re: (スコア:0)
それは規格が結果的に間違ってるんじゃないかなぁ
処理系は規格に従って正しく実装されているかもしれないけど、現実は失敗してるのが事実なわけで…
Re:Hello WorldというよりC処理系の問題では? (スコア:2, 参考になる)
何も失敗してないだろ?
puts(): バッファーに書き込め。(条件によってはフラッシュせよ)
return: (前略)、バッファーをフラッシュし、ストリームをクローズし、(中略)、フラッシュやクローズなどの際に発生した下位エラーは無視して、指定した値でプログラムを終了しろ。
というプログラマからの指示を受けたので、その通りに動作している。完全に予想どおりの動作。
それ以外の指示していない動作をしたりしたら逆に困る。
ヘボなプログラマーが自分が何を指示したかもわからずに文句言ってるだけ。
「指示した通りに動くんじゃない。俺が心で思った通りに動け!!」
とか言い出す人はプログラマには向いていない。
Re: (スコア:0)
> とか言い出す人はプログラマには向いていない。
おっしゃるとおり。
規格が間違ってるとか意味不明な発言をする人は無視しましょう。興が冷めます。
Re: (スコア:0)
ユーザ要求に適合するか不適合かを、正しい、間違っているで論ずるのは、炎上の元です。
あるユーザの要求と別のユーザの要求が、同時に両立することができないのが、この界隈なので、そういうもの(既得権益同様、先行ユーザ益優先)と譲歩(妥協)するしかないです。