C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part146
https://mevius.5ch.net/test/read.cgi/tech/1573094136/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
↑え?だってお前、普通ダイナミックリンクするだろ?
"ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
C++相談室 part147
■ このスレッドは過去ログ倉庫に格納されています
2019/12/18(水) 17:56:53.03ID:uFDqtnkl
316デフォルトの名無しさん
2020/01/18(土) 21:23:34.49ID:Upzp+V6z ↓do { } while(0)でこれできたっけ?
if (cond) { goto label1; }
do {
処理A
label1:
処理B
} while (0);
YES! gotoならできる!!
if (cond) { goto label1; }
label2:
処理A
label1:
処理B
goto label2;
if (cond) { goto label1; }
do {
処理A
label1:
処理B
} while (0);
YES! gotoならできる!!
if (cond) { goto label1; }
label2:
処理A
label1:
処理B
goto label2;
317デフォルトの名無しさん
2020/01/18(土) 21:28:09.90ID:Upzp+V6z つか
do {
処理A;
if (cond) { break; }
処理B;
std::unique_ptr p(new Foo());
処理C; // pを使用
} while (0);
みたいな腐り切った腐敗臭しかしないコードを書くぐらいなら
std::unique_ptr p;
{
処理A;
if (cond) { goto last; }
処理B;
p = std::unique_ptr(new Foo());
処理C; // pを使用
}
last:
;
と書くわ
Perl風に
do {
処理A;
if (cond) { break; }
処理B;
std::unique_ptr p(new Foo());
処理C; // pを使用
} while (0);
みたいな腐り切った腐敗臭しかしないコードを書くぐらいなら
std::unique_ptr p;
{
処理A;
if (cond) { goto last; }
処理B;
p = std::unique_ptr(new Foo());
処理C; // pを使用
}
last:
;
と書くわ
Perl風に
318デフォルトの名無しさん
2020/01/18(土) 21:30:23.35ID:v/DZPeDP319デフォルトの名無しさん
2020/01/18(土) 21:30:23.45ID:cLOUBKze ID:0qsbj5e出てこいオラ
320デフォルトの名無しさん
2020/01/18(土) 21:34:58.69ID:cLOUBKze ID:0qsbj5e6 出てこい
321デフォルトの名無しさん
2020/01/18(土) 21:42:46.68ID:65HS6FKB322デフォルトの名無しさん
2020/01/18(土) 21:45:43.25ID:cLOUBKze そうそう
兆くだらねえ話だ(わざと誤字
兆くだらねえ話だ(わざと誤字
323デフォルトの名無しさん
2020/01/18(土) 21:47:11.24ID:cLOUBKze goto過敏症のアホどもが少しでも目を醒ましてくれるといいな
324デフォルトの名無しさん
2020/01/18(土) 21:49:54.58ID:v/DZPeDP325デフォルトの名無しさん
2020/01/18(土) 21:51:28.17ID:v/DZPeDP >>323
この場合gotoは何の解にもなっていないことにそろそろ気づいた方がいいよ
この場合gotoは何の解にもなっていないことにそろそろ気づいた方がいいよ
326デフォルトの名無しさん
2020/01/18(土) 21:53:26.94ID:v/DZPeDP327デフォルトの名無しさん
2020/01/18(土) 21:59:36.19ID:0qsbj5e6 RAII対応してないから無理矢理goto出来るようにした糞コード上げられてもああ糞ですねと言うしかないんだが。
内部が複雑になってきたらその度にブロック外に変数追加して、変数の内容の初期化は必要に応じてって書き方を続けるつもりなんかね
内部が複雑になってきたらその度にブロック外に変数追加して、変数の内容の初期化は必要に応じてって書き方を続けるつもりなんかね
328デフォルトの名無しさん
2020/01/18(土) 22:27:52.30ID:cLOUBKze >>325
gotoが何かの解になったらいいの?wwwwwwww
gotoが何かの解になったらいいの?wwwwwwww
329デフォルトの名無しさん
2020/01/18(土) 22:28:06.88ID:4nVoSga0 >>304
そうなんだっけ?
そうなんだっけ?
330デフォルトの名無しさん
2020/01/19(日) 00:26:12.30ID:M/ehGL7C やっぱこういうコードは一度書いてみたいよな
try {
label:
何かの処理;
} catch (Exception ex) {
goto label;
}
try {
label:
何かの処理;
} catch (Exception ex) {
goto label;
}
331デフォルトの名無しさん
2020/01/19(日) 00:32:09.37ID:M/ehGL7C gotoを使うと糞、と言う香具師は多いが
goto以外の構文も大概なことがある
↓これとか
EnterCriticalSection(&csec);
{
if (エラー条件成立) {
LeaveCriticalSection(&csec);
throw "*** ERR ***";
}
何かの処理;
}
LeaveCriticalSection(&csec);
一体どうすれば…orz
goto以外の構文も大概なことがある
↓これとか
EnterCriticalSection(&csec);
{
if (エラー条件成立) {
LeaveCriticalSection(&csec);
throw "*** ERR ***";
}
何かの処理;
}
LeaveCriticalSection(&csec);
一体どうすれば…orz
332デフォルトの名無しさん
2020/01/19(日) 00:36:14.30ID:M/ehGL7C いやまあテストラクトされるときにLeaveCriticalSection()するような
AutoLockオブジェクトを使えば済むっていやー済むが
裏返せばgoto以外の構文も糞製造機であることにはかわりわない!
AutoLockオブジェクトを使えば済むっていやー済むが
裏返せばgoto以外の構文も糞製造機であることにはかわりわない!
333デフォルトの名無しさん
2020/01/19(日) 00:38:55.96ID:ocqIlbpk それは構文が糞なんじゃなくてリソース管理が糞なだけ
334デフォルトの名無しさん
2020/01/19(日) 01:24:22.15ID:PgEzQeWd auto lockなんてむしろ使ってなかったらPRでリジェクトされる
335デフォルトの名無しさん
2020/01/19(日) 06:28:34.04ID:6oeBvQPN gotoの何が悪いのかを端的に表すたった一言が出てこない教条主義は物笑いの種
336デフォルトの名無しさん
2020/01/19(日) 07:19:17.26ID:M/ehGL7C 誰にも迷惑がかからないgotoの例:
for (a = 0; a < 2; a++) {
for (b = 0; b < 2; b++) {
for (c = 0; c < 2; c++) {
....
for (zaaa = 0; zaaa < 2; zaaa++) {
処理A
if (何かの条件) { goto last; }
処理B
}
...
}
}
}
last:
;
for (a = 0; a < 2; a++) {
for (b = 0; b < 2; b++) {
for (c = 0; c < 2; c++) {
....
for (zaaa = 0; zaaa < 2; zaaa++) {
処理A
if (何かの条件) { goto last; }
処理B
}
...
}
}
}
last:
;
337デフォルトの名無しさん
2020/01/19(日) 07:24:20.07ID:M/ehGL7C >>334
たまたまLeaveCriticalSection()はエラーを返さないが
エラーを生じるブツだったらどうすんじゃ
まあエラー通知先があれば良いのでやりようはあるが
加速度的に手が込んだコードが必要になって全体が糞化していくんじゃ!
たまたまLeaveCriticalSection()はエラーを返さないが
エラーを生じるブツだったらどうすんじゃ
まあエラー通知先があれば良いのでやりようはあるが
加速度的に手が込んだコードが必要になって全体が糞化していくんじゃ!
338デフォルトの名無しさん
2020/01/19(日) 07:35:30.18ID:ilIPQsua そもそもそのgotoを書きたくなるくらい深くネストしている時点でよくない説
339デフォルトの名無しさん
2020/01/19(日) 08:03:07.26ID:Wel1D6/w340デフォルトの名無しさん
2020/01/19(日) 08:05:11.96ID:6oeBvQPN 教条主義というよりただのバカ
341デフォルトの名無しさん
2020/01/19(日) 08:08:17.50ID:D5W6f6uH gotoの使い方くらい知っておいた方が良いかと
342デフォルトの名無しさん
2020/01/19(日) 08:51:50.65ID:2MN/c8bt gotoにせよthrowにせよ、goto/throwの発生元が分からないのが受身になる側として辛い。
この点は、スタック情報へのアクセスが言語仕様として認められているJava/C#/Perl/Pythonに優位がある。
この点は、スタック情報へのアクセスが言語仕様として認められているJava/C#/Perl/Pythonに優位がある。
343デフォルトの名無しさん
2020/01/19(日) 08:54:43.67ID:M/ehGL7C throwの発生元は例外オブジェクトに情報を持たせれば良いじゃん?
gotoのジャンプ元は変数に情報を持たせれば良いじゃん??
gotoのジャンプ元は変数に情報を持たせれば良いじゃん??
344デフォルトの名無しさん
2020/01/19(日) 09:02:38.34ID:2MN/c8bt >>343
goto/throw発生元がバイナリで配布されている場合は、コードを書き換えられない。
クラス設計でやたらとメンバ変数をprivateにされると、クラスを利用する側はメンバ変数を古典的プリントデバッグできなくて難儀する。
goto/throw発生元がバイナリで配布されている場合は、コードを書き換えられない。
クラス設計でやたらとメンバ変数をprivateにされると、クラスを利用する側はメンバ変数を古典的プリントデバッグできなくて難儀する。
345デフォルトの名無しさん
2020/01/19(日) 09:04:12.06ID:2MN/c8bt C++のprivate属性は厳しすぎ。readonlyアクセスできる属性があってもいいと思うんだ。
346デフォルトの名無しさん
2020/01/19(日) 09:11:24.83ID:M/ehGL7C347デフォルトの名無しさん
2020/01/19(日) 09:12:59.39ID:2MN/c8bt タイミング依存の不具合を追跡する必要に迫られると、当然ながら対話デバッグはできない。
C++のprivate変数が不具合に関与しているとわかってもランタイムで値を見れないのは辛い。
他人様の作ったC++クラスヘッダーを一時的に書き換えてコンパイルする羽目に。
C++のprivate変数が不具合に関与しているとわかってもランタイムで値を見れないのは辛い。
他人様の作ったC++クラスヘッダーを一時的に書き換えてコンパイルする羽目に。
348デフォルトの名無しさん
2020/01/19(日) 09:17:35.49ID:2MN/c8bt349デフォルトの名無しさん
2020/01/19(日) 09:20:25.20ID:2MN/c8bt 公式がデバッグシンボルを配布するご時世なのに、C++のスタック仕様はそれについていけていない。
デバッガを介することなくスタックをダンプできる手段が制約されすぎ。
デバッガを介することなくスタックをダンプできる手段が制約されすぎ。
350デフォルトの名無しさん
2020/01/19(日) 10:49:09.39ID:CSTVsvTH gotoはRAIIと相性が悪いってのが端的だろ
これはgotoが悪いと言うよりc++の言語仕様上のgotoの扱いが悪いって話
constexprで使えないとか規格が新しくなる度に不都合が増えていくよ
これはgotoが悪いと言うよりc++の言語仕様上のgotoの扱いが悪いって話
constexprで使えないとか規格が新しくなる度に不都合が増えていくよ
351デフォルトの名無しさん
2020/01/19(日) 10:57:40.21ID:RfLx+x9F gotoの使い方くらい知っておいた方が良いかと
352デフォルトの名無しさん
2020/01/19(日) 11:07:08.87ID:fzpRtoDi >>350
相性悪い?
相性悪い?
353デフォルトの名無しさん
2020/01/19(日) 11:07:41.05ID:CSTVsvTH 文字列パーサー内とかでの状態遷移に使うは推奨する
その他でのgotoは代替手段があるし、そっちの方が言語サポート良いからgoto使うのはバカのやること
その他でのgotoは代替手段があるし、そっちの方が言語サポート良いからgoto使うのはバカのやること
354デフォルトの名無しさん
2020/01/19(日) 11:12:09.60ID:CSTVsvTH まあ不遇な原因はgotoが自由すぎて前にも後ろにも飛べるせいだろうね
変数のデストラクタを呼ぶべきかどうかフラグ管理でもしないとコンパイラが判断できなくなる。
goto使うならその自由さが必要な場面でこそ使うべきなんだよ
変数のデストラクタを呼ぶべきかどうかフラグ管理でもしないとコンパイラが判断できなくなる。
goto使うならその自由さが必要な場面でこそ使うべきなんだよ
355デフォルトの名無しさん
2020/01/19(日) 11:18:58.21ID:2MN/c8bt >>354
プログラミング言語の世界では、前や後ろという表現は直観的にわかりにくい。
前や後ろは相対的なものであり、バックしているイテレータにとっては前はバックなのだ。
上と下なら直観的にわかるだろう。
プログラミング言語の世界では、前や後ろという表現は直観的にわかりにくい。
前や後ろは相対的なものであり、バックしているイテレータにとっては前はバックなのだ。
上と下なら直観的にわかるだろう。
356デフォルトの名無しさん
2020/01/19(日) 11:21:16.66ID:CSTVsvTH 用語としては前後で統一されているような
357デフォルトの名無しさん
2020/01/19(日) 11:22:22.50ID:RfLx+x9F gotoの使い方を知らない初心者がこのスレにいるってのが不思議
358デフォルトの名無しさん
2020/01/19(日) 11:27:05.68ID:2MN/c8bt [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita
https://qiita.com/mochizukikotaro/items/84f3ab2740b8efbe0dc6
https://qiita.com/mochizukikotaro/items/84f3ab2740b8efbe0dc6
359デフォルトの名無しさん
2020/01/19(日) 11:29:47.11ID:6oeBvQPN >>357
誤魔化さない説明がちゃんとできるやつがずいぶん少ないという、残念な状況が今の日本だ
誤魔化さない説明がちゃんとできるやつがずいぶん少ないという、残念な状況が今の日本だ
360デフォルトの名無しさん
2020/01/19(日) 11:38:04.97ID:RfLx+x9F わざわざ複雑にしてまでgotoを避ける
って宗教だよな
使いどころで使う
それだけ
って宗教だよな
使いどころで使う
それだけ
361デフォルトの名無しさん
2020/01/19(日) 11:42:59.02ID:ZzFAG3/g いうて必要になったことないや
362デフォルトの名無しさん
2020/01/19(日) 12:30:11.44ID:L2mlhsAt 別にgoto使っても使わなくても馬鹿が書けば複雑なコードになるだろ。
そういう問題じゃない。
そもそもc++の標準ライブラリが例外投げる時点でgotoとの相性は最悪だよ。
一番末端の関数で、副作用もないようなもの以外使えんわ。
そういう問題じゃない。
そもそもc++の標準ライブラリが例外投げる時点でgotoとの相性は最悪だよ。
一番末端の関数で、副作用もないようなもの以外使えんわ。
363デフォルトの名無しさん
2020/01/19(日) 12:36:07.26ID:PgEzQeWd gotoおじさんはたぶん例外安全性という概念をわかってない
364デフォルトの名無しさん
2020/01/19(日) 14:43:36.08ID:6jfPBIzz >>363
例外安全の定義が難しいのですが、gotoを使っても例外安全を保障することはできると思うのですが、いかがでしょうか。
例外安全の定義が難しいのですが、gotoを使っても例外安全を保障することはできると思うのですが、いかがでしょうか。
365デフォルトの名無しさん
2020/01/19(日) 15:06:56.67ID:PgEzQeWd >>364
c++の標準ライブラリに関して例外安全とは何かは定義されてる
できるできないで言えばgotoかつ例外安全はそりゃできるでしょうよ
まずgoto関係なしに例外安全が相当大変であることを理解してから出直してくれ
そうじゃなきゃRAII、autoなんとかmakeなんとかの有難みも理解できてないのよ
c++の標準ライブラリに関して例外安全とは何かは定義されてる
できるできないで言えばgotoかつ例外安全はそりゃできるでしょうよ
まずgoto関係なしに例外安全が相当大変であることを理解してから出直してくれ
そうじゃなきゃRAII、autoなんとかmakeなんとかの有難みも理解できてないのよ
366デフォルトの名無しさん
2020/01/19(日) 15:08:40.81ID:RfLx+x9F 話題のすり替え
367デフォルトの名無しさん
2020/01/19(日) 15:16:49.04ID:PgEzQeWd >>366
話題を勘違いしてるのはお前だよ
お前は単にbreakでスコープの脱出することに対してgotoの方が簡潔と言ってるんだろう
そういう場合があるのは同意するけど今回の話題はそれじゃない
スコープの脱出になってるのはRAIIでリソースを安全に開放する前提だからだ
だからお前が言うべきはスコープをなくしてgotoを使うというなら
合わせてリソースをどのように安全に開放するかを説明しないといけない
場当たり的でない方法でね
そこをまったく説明できない以上お前はgotoおじさんと呼ばれ続ける
話題を勘違いしてるのはお前だよ
お前は単にbreakでスコープの脱出することに対してgotoの方が簡潔と言ってるんだろう
そういう場合があるのは同意するけど今回の話題はそれじゃない
スコープの脱出になってるのはRAIIでリソースを安全に開放する前提だからだ
だからお前が言うべきはスコープをなくしてgotoを使うというなら
合わせてリソースをどのように安全に開放するかを説明しないといけない
場当たり的でない方法でね
そこをまったく説明できない以上お前はgotoおじさんと呼ばれ続ける
368デフォルトの名無しさん
2020/01/19(日) 15:20:52.99ID:fzpRtoDi >スコープをなくしてgotoを使う
なんか言ってることが変だと思ったらこんな条件付けてたのか。ブロックスコープ使えばいいじゃん。
なんか言ってることが変だと思ったらこんな条件付けてたのか。ブロックスコープ使えばいいじゃん。
369デフォルトの名無しさん
2020/01/19(日) 15:26:55.90ID:RfLx+x9F スコープを無くしてgotoで解放?
なんじゃそりゃ?
スコープを抜けないと解放されないぞ
なんじゃそりゃ?
スコープを抜けないと解放されないぞ
370デフォルトの名無しさん
2020/01/19(日) 15:27:43.53ID:PgEzQeWd371295
2020/01/19(日) 15:31:10.41ID:2MN/c8bt どんな劣悪な環境でも動く do{ } while(0); こそ絶対正義。
372デフォルトの名無しさん
2020/01/19(日) 15:33:51.15ID:RfLx+x9F373デフォルトの名無しさん
2020/01/19(日) 15:34:25.99ID:RfLx+x9F >>370の勘違いってことでいいのかな?
374デフォルトの名無しさん
2020/01/19(日) 15:42:01.04ID:PgEzQeWd375デフォルトの名無しさん
2020/01/19(日) 17:03:31.99ID:6jfPBIzz >>365
本来の「例外安全」の定義はもっと広い意味なのですが、あなたは、throwやcatchなどの「例外」が起きたときでもnewされたオブジェクトの削除などを行うという定義を採用されているようです。
break文を用いずにgoto文でブロックを脱出した場合でもオブジェクトは自動解放されるのをご存知ですか?
本来の「例外安全」の定義はもっと広い意味なのですが、あなたは、throwやcatchなどの「例外」が起きたときでもnewされたオブジェクトの削除などを行うという定義を採用されているようです。
break文を用いずにgoto文でブロックを脱出した場合でもオブジェクトは自動解放されるのをご存知ですか?
376デフォルトの名無しさん
2020/01/19(日) 17:07:28.86ID:PgEzQeWd377デフォルトの名無しさん
2020/01/19(日) 17:11:06.93ID:4SQs66uE378デフォルトの名無しさん
2020/01/19(日) 17:42:21.12ID:fzpRtoDi379デフォルトの名無しさん
2020/01/19(日) 18:24:30.09ID:6oeBvQPN 論点を増やそうとするのは苦しいやつの習性だね
380デフォルトの名無しさん
2020/01/19(日) 18:46:40.48ID:PgEzQeWd381デフォルトの名無しさん
2020/01/19(日) 18:52:29.41ID:6oeBvQPN そうだよ、変わんないよ
複合文だけでできることになんでわざわざdoなんて面倒くせえもん使わなきゃいけねえんだよ
複合文だけでできることになんでわざわざdoなんて面倒くせえもん使わなきゃいけねえんだよ
382デフォルトの名無しさん
2020/01/19(日) 18:52:32.23ID:PM2cmccN Rust使えばすべて解決。
383デフォルトの名無しさん
2020/01/19(日) 18:53:23.88ID:6oeBvQPN まさかとは思うがブレースを開くのにdoだかforだか何らかのキーワードが必要とでも思ってたか?
384デフォルトの名無しさん
2020/01/19(日) 18:56:46.75ID:PM2cmccN 俺は何の実績もないおまえの言うことより、あわしろいくや氏を信じるけどな。
385デフォルトの名無しさん
2020/01/19(日) 18:57:26.46ID:yjllCGTd >>378
噂のgotoおじさまもさすがにこのコードがいいなんて言わないでしょ
噂のgotoおじさまもさすがにこのコードがいいなんて言わないでしょ
386デフォルトの名無しさん
2020/01/19(日) 18:59:17.52ID:6oeBvQPN387デフォルトの名無しさん
2020/01/19(日) 19:00:40.10ID:PM2cmccN388デフォルトの名無しさん
2020/01/19(日) 19:01:36.43ID:4SQs66uE >>387
俺はお前のあわしろいくや氏は信用できるという言葉が信用できない
俺はお前のあわしろいくや氏は信用できるという言葉が信用できない
389デフォルトの名無しさん
2020/01/19(日) 19:02:52.67ID:PM2cmccN390デフォルトの名無しさん
2020/01/19(日) 19:15:30.92ID:ocqIlbpk 売名乙
391デフォルトの名無しさん
2020/01/19(日) 19:29:04.71ID:yQO+Nq01 まさか do while 構文が論点だと思ってたんかな?
まあ本当はgotoを推す正当性が全くなくてごまかしてるんだろうけれど。
てかgotoと例外安全性はかなり綿密に絡んだ話だろ。誤魔化しすぎだわ。
まあ本当はgotoを推す正当性が全くなくてごまかしてるんだろうけれど。
てかgotoと例外安全性はかなり綿密に絡んだ話だろ。誤魔化しすぎだわ。
392デフォルトの名無しさん
2020/01/19(日) 19:45:18.96ID:6oeBvQPN >>387
ヒゲ生やした教祖様のために死刑になった信者と同じだなw
ヒゲ生やした教祖様のために死刑になった信者と同じだなw
393デフォルトの名無しさん
2020/01/19(日) 19:46:34.82ID:fzpRtoDi394デフォルトの名無しさん
2020/01/19(日) 19:46:39.94ID:6oeBvQPN > かなり綿密に絡んだ話だろ
誤魔化しすぎというブーメランが脳天に突き刺さってるぞw
誤魔化しすぎというブーメランが脳天に突き刺さってるぞw
395デフォルトの名無しさん
2020/01/19(日) 19:54:00.26ID:yQO+Nq01 なるほど。。こりゃ話しても無駄だな。
396デフォルトの名無しさん
2020/01/19(日) 20:25:44.83ID:M/ehGL7C gotoと例外安全性がどう絡むのかわからんボスケテ;
397デフォルトの名無しさん
2020/01/19(日) 21:06:11.93ID:fzpRtoDi 話しても無駄以前に、結局gotoと例外安全がどう関係するのか一言も出てこなかったな。
398デフォルトの名無しさん
2020/01/19(日) 21:10:50.68ID:CSTVsvTH RAIIとgotoは混ぜられないだろ
399デフォルトの名無しさん
2020/01/19(日) 21:13:01.22ID:AinWVopR そらgotoでリソース開放ルーチンに飛ぶようなCスタイルのプログラム書くと
例外飛んできたときに死ぬって話でしょ
(いくらC++にfinallyが無いからってgotoでリソース開放ルーチンに飛ぶのはダメ)
ただし元々の質問には関係ない話なんだがな
ところでC++にfinallyが無いのはちょっと良くないよね
今となってはラムダで自作できるようになったからいいけど
例外飛んできたときに死ぬって話でしょ
(いくらC++にfinallyが無いからってgotoでリソース開放ルーチンに飛ぶのはダメ)
ただし元々の質問には関係ない話なんだがな
ところでC++にfinallyが無いのはちょっと良くないよね
今となってはラムダで自作できるようになったからいいけど
400デフォルトの名無しさん
2020/01/19(日) 21:16:51.88ID:fzpRtoDi >>398
その「混ぜる」って具体的にはどういうことを言ってるんだろう。
その「混ぜる」って具体的にはどういうことを言ってるんだろう。
401デフォルトの名無しさん
2020/01/19(日) 21:24:53.93ID:AinWVopR 基本的に break や return も生き先の決まった goto なので
余ほど変な使い方をしない限りRAIIと goto を混ぜれないって事はないよなぁ
むしろ RAII を使わないで goto でC系のリソース開放をしていた場合にハマるって話では
まぁでもこれは
do{
if( error ) break;
}while(0);
//開放処理
return;
でも同じことだし、元の質問には関係ないんだが
余ほど変な使い方をしない限りRAIIと goto を混ぜれないって事はないよなぁ
むしろ RAII を使わないで goto でC系のリソース開放をしていた場合にハマるって話では
まぁでもこれは
do{
if( error ) break;
}while(0);
//開放処理
return;
でも同じことだし、元の質問には関係ないんだが
402デフォルトの名無しさん
2020/01/19(日) 21:34:33.08ID:RfLx+x9F403デフォルトの名無しさん
2020/01/19(日) 21:40:42.19ID:RfLx+x9F404デフォルトの名無しさん
2020/01/19(日) 21:44:50.08ID:RfLx+x9F まあどっちでも大差ないけど
405デフォルトの名無しさん
2020/01/19(日) 21:47:25.68ID:RfLx+x9F {
{
if (...) goto label;
}
}
label:
これはbreakじゃ無理
{
if (...) goto label;
}
}
label:
これはbreakじゃ無理
406デフォルトの名無しさん
2020/01/19(日) 21:57:15.09ID:RfLx+x9F {
switch (...)
{
case ...: goto label;
}
}
label:
これも無理
switch (...)
{
case ...: goto label;
}
}
label:
これも無理
407デフォルトの名無しさん
2020/01/19(日) 22:11:05.36ID:ByUy1Erg while(0)とか意味不明なコードよりgotoでスコープ抜ける方がはるかにシンプルだわな
408デフォルトの名無しさん
2020/01/19(日) 22:15:20.58ID:RfLx+x9F 一応 do while(0) の使い方も覚えておいた方が良い
他人のコードを見たりマクロで使ったり
する事もあるだろうから
他人のコードを見たりマクロで使ったり
する事もあるだろうから
409デフォルトの名無しさん
2020/01/19(日) 22:17:28.52ID:JMAoH3/H 普段のdo whileもwhile(0)って書くなど弊害が出るのでやめた方がいい
410デフォルトの名無しさん
2020/01/19(日) 22:19:27.67ID:ByUy1Erg ループするつもりもないのにループの構文使うのは悪手だと思う
411デフォルトの名無しさん
2020/01/19(日) 22:27:26.89ID:RfLx+x9F >>409
日本語で
日本語で
412デフォルトの名無しさん
2020/01/19(日) 22:33:02.85ID:fzpRtoDi そこはまぁ、ループではあるけれども同時にbreakが使えるブロックでもあるわけで、
実際do-whileなんてほとんどがそういう使い方しかされていないわけだし。
ループできる構文でループしないのはbreakできる構文でbreakを使わないのと
同じようなものかと。
実際do-whileなんてほとんどがそういう使い方しかされていないわけだし。
ループできる構文でループしないのはbreakできる構文でbreakを使わないのと
同じようなものかと。
413デフォルトの名無しさん
2020/01/19(日) 22:36:02.43ID:JMAoH3/H414デフォルトの名無しさん
2020/01/19(日) 22:48:25.05ID:PgEzQeWd こんなささいな違いは個人の好みでいいと思う派
do-while使わない派の言い分もわからなくもないが、
ソースを読む場合gotoだってgoto先を確認しないと意図が理解できないだろ
label名を考える必要があるのもちょっとめんどい
なのでこんなのどっちでもいい
ちなみにrust方式もブロックの先頭にラベル付いてるのは若干違和感覚える
do-while使わない派の言い分もわからなくもないが、
ソースを読む場合gotoだってgoto先を確認しないと意図が理解できないだろ
label名を考える必要があるのもちょっとめんどい
なのでこんなのどっちでもいい
ちなみにrust方式もブロックの先頭にラベル付いてるのは若干違和感覚える
415デフォルトの名無しさん
2020/01/19(日) 22:50:45.02ID:RfLx+x9F >>413
誰か解説よろしく!
誰か解説よろしく!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 寝癖ってどうしたらつかなくなるんや?
- 自閉症が「んなっしょい」と連呼するお🏡
- 【画像】エロい一般漫画はなぜこんなに抜けるのか
- BTSのバラエティ面白すぎワロタ
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
