noreturnの挙動
参加できなかった午前中の会議のレポートが気になってたけど出た。終わっちゃった会議にケチつけるのは野暮だけれど,noreturnの話がなんかいろいろおかしい。「何の為のnoreturn?」という肝心な点がどっかいってる。
exit等にnoreturn属性を付けてほしい
http://d.hatena.ne.jp/faith_and_brave/20081208
なぜ???? exit()は標準関数なんだから, 返らないのはコンパイラが知っていますよ。
規格でも"The function exit() never returns to its caller."ってなってるし。
exit()にnoreturn属性を付けてほしいという人はいったい「何の為に」付けてほしいのか?
「せめて関数が返る場合に未定義エラーというのはどうにかしてくれ」というコメントに修正することになった
http://d.hatena.ne.jp/faith_and_brave/20081208
関数が返る場合のチェックを強制したら,最適化できない(場合によっては遅くなる)んだからnoreturnの存在意義がなくなるじゃん...(´・ω・`)
例えばnonnullというattributeがあったとして
void f(int *p [[nonnull]]) { .... }
とした場合に, pのnullチェックを挿入しろと言っているようなもんです。それはおかしいでしょう。