アカウント名:
パスワード:
1968年の論文を踏まえて無軌道にgotoを使わなくてもいいように言語仕様が設計されたりプログラマーが使用を自重するようになったんだろ。
今となっては goto 文を使う人は、そうした方が見通しいい場合に限り使っているという印象case break の方が危ういね
#一般のブロック抜けgotoが欲しい
> #一般のブロック抜けgotoが欲しい
C言語だと,ブロックを別関数にして return を使う,というのが一つの解ですね.
別関数にすると,関数呼び出しのオーバヘッドを気にする人がいますが,オーバヘッドは生じません.今時のコンパイラは最適化処理が賢いので,無駄な関数呼び出しは自動でインライン展開されます.
ただ関数にするとローカル変数をすべて関数の引数として渡す必要があるので,コーディングするときは少々面倒です.
最近のC++だともっと綺麗かつ効率良いコードが書けます.具体的には
std::vector<int> a
今時のコンパイラは最適化処理が賢いので,無駄な関数呼び出しは自動でインライン展開されます.
そんな頭のいいコンパイラなんてあるかなあ? 関数の大きさとかで一律に判断してるとかじゃないの。そんな条件も最適化オプションで変わったりするし、インライン展開させたい/させたくないってときにはプログラマが#pragmaとかでいちいち指定するのがいまだに普通だと思うが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
原因と結果が逆 (スコア:5, すばらしい洞察)
1968年の論文を踏まえて無軌道にgotoを使わなくてもいいように言語仕様が設計されたりプログラマーが使用を自重するようになったんだろ。
Re: (スコア:2, すばらしい洞察)
今となっては goto 文を使う人は、そうした方が見通しいい場合に限り使っているという印象
case break の方が危ういね
#一般のブロック抜けgotoが欲しい
Re: (スコア:3, 興味深い)
> #一般のブロック抜けgotoが欲しい
C言語だと,ブロックを別関数にして return を使う,というのが一つの解ですね.
別関数にすると,関数呼び出しのオーバヘッドを気にする人がいますが,オーバヘッドは生じません.
今時のコンパイラは最適化処理が賢いので,無駄な関数呼び出しは自動でインライン展開されます.
ただ関数にするとローカル変数をすべて関数の引数として渡す必要があるので,コーディングするときは少々面倒です.
最近のC++だともっと綺麗かつ効率良いコードが書けます.具体的には
std::vector<int> a
Re:原因と結果が逆 (スコア:0)
今時のコンパイラは最適化処理が賢いので,無駄な関数呼び出しは自動でインライン展開されます.
そんな頭のいいコンパイラなんてあるかなあ? 関数の大きさとかで一律に判断してるとかじゃないの。
そんな条件も最適化オプションで変わったりするし、インライン展開させたい/させたくないってときにはプログラマが#pragmaとかでいちいち指定するのがいまだに普通だと思うが。