- 1 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:56:53.03 ID:uFDqtnkl.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part146 https://mevius.5ch.net/test/read.cgi/tech/1573094136/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 ↑え?だってお前、普通ダイナミックリンクするだろ? "ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
- 511 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 09:47:45 ID:s6VTVCIo.net]
- 最近というか昔からだなデバッグまわりがクソなのは
ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ デバッグをないがしろにするなと >>497 端的にテンプレートが原因だから言語のせい というか誰のせいかどうでもいいから解を提供しろと
- 512 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:28:10 ID:dJnLloAw.net]
- >>498
最適化設定を変えることが解になると思って言ったんだけど、そうはいかないことがあるの? デバッグまわりがクソだと言うなら、相手はまずコンパイラ&デバッガのベンダであって、言語の標準化は あんまり関係なくね?
- 513 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:34:22 ID:Oj6zQLXh.net]
- インライン展開するかどうか含めて
最適化はコンパイラ依存 パフォーマンス測定やチューニングは 実際の環境でやらないと 可能性で言えばマクロが一番インライン展開の可能性が高い (コンパイラが賢すぎて同一コードを共有するとかない限り)
- 514 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:50:51 ID:kHABv+Er.net]
- マクロはソースの字面を読み替えるだけ
機械語の命令シーケンスを開いたサブルーチンにするインライン展開とは全く別な話
- 515 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:06:37.54 ID:OzkwmLpy.net]
- >>500
マクロは、C
- 516 名前:言語の時代から「前処理(preprocess)」として処理され、
コンパイル作業が入る前にその場にトークンとして展開されるだけと 仕様で決まっています。勝手に関数になる可能性はほぼ0です。 [] - [ここ壊れてます]
- 517 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:28:55 ID:S75Q14iC.net]
- 挙動が仕様通りになるならコンパイラは何やってもいいんだよ(と仕様で決まってる)
マクロだったものに関数呼び出しを仕込むのもコンパイラの自由だ 実際同じ処理の塊があっちこっちに出てきたらまとめて関数(みたいなもの)にするコードサイズ最適化は普通にやる可能性がある
- 518 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:40:53 ID:Oj6zQLXh.net]
- >>501
オーバーヘッドを語ってるんだから どういう手順でバイナリになるかは関係ない バイナリになった状態が全て >>502 >>500にそう書いてるけど
- 519 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:12:02.54 ID:kHABv+Er.net]
- >>504
マクロ展開は最適化が始まる前の話だつってんだよ、わかんねーやつだな #define a(b,c) b * 2 + c * 2 a(x, y) //これは x * 2 + y * 2 //こうしろというだけの指示で (x + y) * 2 //このような変形は意味していないし してはならない a(x, y) * z //こういうとき困るだろうが
- 520 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:18:49.85 ID:kHABv+Er.net]
- インライン展開されるかどうかは、そのコード片がマクロの展開結果かどうかには関係ないってことだぞ
こんなこと、いちいち言わなきゃわからんようだから付け足しておく
- 521 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:34:41.13 ID:S75Q14iC.net]
- >>505
最適化をいつ始めるかなんてそれこそコンパイラ次第なんだけど
- 522 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:41:29 ID:yb939hMs.net]
- つまりマクロはインライン展開されやすいという主張は引っ込めるわけだな
- 523 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:43:39 ID:yb939hMs.net]
- 都合悪くなると
どうせいつもの手で逃げるだろうけどな 尻尾巻いたやり取りは残るぜ
- 524 名前:デフォルトの名無しさん [2020/01/22(水) 14:44:17 ID:54HMiZ6v.net]
- >>505
#define a(B,C) ((B) * 2 + (C) * 2) >>498 >ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ ほんそれ
- 525 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 14:49:21 ID:kHABv+Er.net]
- >>510
それはおまえさんの勝手な思い込みだよ x * 2 + y * 2 * z という結果を意図して使うこともできるのは マクロに特有の機能で今さら変更できなくなっている
- 526 名前:デフォルトの名無しさん [2020/01/22(水) 14:51:21 ID:54HMiZ6v.net]
- 意図して出来るのは知ってるが
敢えてやらないんだよ
- 527 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:11:37.83 ID:s6VTVCIo.net]
- >>499
デバッグのために最適化切ると激遅になる問題が散見されるという問題にたいして 最適化設定を変えるという解がナンセンス そりゃpragma駆使して手で細かく切り替えりゃ可能だろうがそんなことやってられない
- 528 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:11:48.33 ID:kHABv+Er.net]
- オマエガナー(aary
- 529 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:13:12.36 ID:kHABv+Er.net]
- >>512
おまえが510で持ち出したような括弧が自動的に付くような規格改定が行われない理由を考えたことがあるか?
- 530 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:13:39.10 ID:Oj6zQLXh.net]
- >>505
多分比較してる内容が噛み合ってない マクロを展開した結果と直接記述と が同じなのは当然 プリプロセッサなわけだから そうじゃなくて マクロ、インライン関数、通常の関数の比較の話 当然最適化の期待度は マクロ(直接記述)>インライン関数>通常の関数
- 531 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:18:02.26 ID:Oj6zQLXh.net]
- >>505
そもそも最適化ですらない話を持ち出してるのか 話の流れと全く関係ないですね
- 532 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:32:14.07 ID:s6VTVCIo.net]
- >>499
ベンダの責任っていうのは一見もっともでそれがまさにc++標準化メンバーのスタンスだ でも例えばお前はSFINAE関連のデバッグどうやってるよ? いくつかツールはあるが導入が難しいか頼りないものばかりだ そんな状況がずっと続いている このあたりが改善するには言語コアを設計する時点からどんなデバッグ機能が必要か考えるべきってのがおれ
- 533 名前:フ主張
作業フローを理解しない人が無邪気にこれが入ればさらにソースコード短く書けまっせレベルの議論で機能追加を考えるべきでない [] - [ここ壊れてます]
- 534 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:34:50.28 ID:2biZgMt+.net]
- 機能を使うかどうかはお前の判断でお前の責任
勝手に機能使っておいて八つ当たりすんな
- 535 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:50:53.24 ID:LkBGzo9o.net]
- >ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ
+1
- 536 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:53:26.36 ID:2biZgMt+.net]
- 江添みたいなのしかいない日本と違って、普通の国の委員は企業の代表として参加しているのでその指摘は的外れ
- 537 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:57:43.58 ID:OzkwmLpy.net]
- >>503
関数になっているものを inline 展開する処理系は多数ありますが、 プログラマがせっかく展開して書いてあるものをわざわざ関数に戻す処理系 はめったにないのです。 また、そのような最適化は人間には簡単に思えるものですが、機械にやらせようと するととても大変です。マクロ展開される前のマクロ関数の状態ならまだ できるのですが、コンパイラの中で最適化層と前処理層がかけ離れた位置に あるので、もしやりたければ最適化層だけでそれをやることになり処理がとても重くなります。 まず、コンパイル後に出来上がった中間コードのなかから同一のパターンを見出すのが ものすごく時間が掛かります。それから全く同じではない場合への対処が機会は苦手です。
- 538 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:57:58.58 ID:kHABv+Er.net]
- >>516
最後の2行とそれ以前が論理的に繋がってないぞ
- 539 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:58:35.89 ID:kHABv+Er.net]
- >>517
506で牽制しておいたはずなんだが 言わなきゃわからんのではなく、 言ってもわからんやつのようだな
- 540 名前:はちみつ餃子 mailto:sage [2020/01/22(水) 18:28:00.61 ID:lnnB9FBg.net]
- >>516
> 当然最適化の期待度は > マクロ(直接記述)>インライン関数>通常の関数 現代のコンパイラの最適化機構はかなり複雑で、どのように最適化が効くか予想するのは無理。 素朴な処理系ならなんらかの傾向がある場合もあると思うけど、一般化できるような話ではないよ。 普通の関数はインライン関数より呼び出しのコストは確かに大きいけど、 全体のコードサイズが大きくなるとキャッシュメモリからあふれやすいといった話もあって、 トレードオフになってる要素がある。 それに、主要なコンパイラは inline キーワードで修飾してもしなくてもインライン化が効果的ならインライン化するし、 効果的でないならしないよ。 inline 関数として定義すれば各コンパイル単位の中に必ず定義もあるわけだから、 LTO が有効ではない状況では結果的にインライン化しやすい条件がととのっているとは言えるんだけど、 逆に言えば LTO を有効に出来るならどうでもよくなるわけだし。 いずれにしても、そんな微々たる速度が気になるような場合ってそんなにあるか? 速度が問題になってから実測しろよ。 状況によってどうとでもなるんだから、具体的な状況を示さずにどれが速いとか言ったってかみ合うわけないだろ。
- 541 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 18:44:11.63 ID:0ayd3B3Q.net]
- >>525
一般的な期待度の話 当然例外はある コンパイル単位が別で 関数を定数パラメーターでコールした場合 なんかが差が大きくなる レジスタ退避やスタックポインタのアラインメント調整、スタック拡張、AVXの準備関数コール もそれなりにオーバーヘッドとなる 同じコンパイル単位であれば 今のコンパイラではそれほど差は出ないが 組み込みのチープなコンパイラもまだまだ使われている
- 542 名前: mailto:sage [2020/01/22(水) 19:06:41.58 ID:RZgzSQWe.net]
- >>501
お前さんは LISP のマクロを知らないのか?
- 543 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 19:17:53.96 ID:2biZgMt+.net]
-
- 544 名前:LISPの仕様がC++と何か関係ある? []
- [ここ壊れてます]
- 545 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 20:23:02 ID:OSofFadI.net]
- 関数とマクロの違いがlispだとわかりやすいから。
わかってないやつをあぶりだすのにはちょうどいい。
- 546 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 20:38:48 ID:F1N+c+gr.net]
- マクロアセンブラのマクロは強力
- 547 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 21:16:42.45 ID:kHABv+Er.net]
- >>527
で?
- 548 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 22:55:42 ID:PNeen3jP.net]
- LISPじゃー
LISPの場合はー www
- 549 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 23:00:35 ID:Ab6Q02+v.net]
- QZが現れると大抵話が脱線するから放置しとこう。
- 550 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 02:42:18 ID:96Ez/jHv.net]
- >>518
よくわかんないので、SFINAEなりConceptなりconstexprなりをデバッグに配慮して設計していたら どう問題を改善できていたと思うのか、教えて。
- 551 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 05:39:34 ID:ZM0XhcNb.net]
- (CMakeスレがないっぽいので)
target_link_libraries(a.exe PRIVATE ${MPI_CXX_LIBRARIES}) ↑${MPI_CXX_LIBRARIES}が定義されていなくても合法で、その場合何ともリンクしないということを期待してもOK? それとも if(MPI_FOUND) target_link_libraries(...) endif() とすべき? 公式を見てもよく分からない
- 552 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 07:08:06 ID:Y+bt1zIi.net]
- >>535
こちらでどうぞ https://mevius.5ch.net/test/read.cgi/tech/1573214616/
- 553 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 09:24:40 ID:cHzm9I9L.net]
- >>534
デバッグに配慮してたらそんな糞機能入れないだろうね。
- 554 名前:デフォルトの名無しさん [2020/01/23(Thu) 10:15:54 ID:77XEoAHk.net]
- 今日もgotoを使ってしまった・・・
- 555 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 10:22:15.42 ID:KV664nBl.net]
- >>534
まず現在の問題の構造を考えて欲しい c++はtemplateを使ってメタプログラミングを行うのはご存知の通り でtemplateはチューリング完全だ それだけの複雑さを持っている それに対して一般人がやるデバッグはコンパイルが通って期待通り動くかエラーメッセージを見るかぐらいだろ? これは原始的なprintfデバッグを行っているのと同じレベル なのでまずストレートに考えると メタプログラミングの結果が取得できること コンパイラにデバッガ接続可能にしてメタプログラミングの実行がトレースできること が必要 これがベストなのかはさておき、メタでないプログラミングでは当たり前なんだから SFINAEをどうするかみたいな話の前にまずこういうところを整備すべきだった ハードウェア依存じゃないのだから標準モデルを定めるのは可能だ
- 556 名前:デフォルトの名無しさん [2020/01/23(Thu) 10:45:58 ID:77XEoAHk.net]
- gotoを受け入れるとクリーンでわかりやすい実装が開ける。
・・・かもしれない。
- 557 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 10:47:36 ID:96Ez/jHv.net]
- >>539
> メタプログラミングの結果が取得できること > コンパイラにデバッガ接続可能にしてメタプログラミングの実行がトレースできること > が必要 あったらいいなとは思うけど、必要(=可能になるまで機能を使わせるべきではない)とは思わないなぁ。 実行時プログラムについて言語規格側でデバッグのための特別な「標準モデル」が定められたりいてないけど、 現状でわりと使えるデバッガができてるし、コンパイラはあるけどデバッガは無いという環境や時代はあったし。 メタプログラミングだからといって機能追加に先立って特別な定めが要るという理屈はよくわからない。
- 558 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:24:46 ID:Y+bt1zIi.net]
- >>540
470, 472も言っているが gotoを使わないこと自体が目的化してはいけない そういうアホがbreakは平気で使ったりする
- 559 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:27:54 ID:y5HKK+ir.net]
- constexpr関数内でgoto使えないのだから、gotoを避けることを目的とせざるを得ない場面はある。
- 560 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:28:08 ID:77XEoAHk.net]
- breakとgotoを同一視するのも問題なのでは。
- 561 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:28:57 ID:Y+bt1zIi.net]
- >>544
同一視ってGOTO有害説の中では完全に同じだよ
- 562 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:31:15 ID:y5HKK+ir.net]
- goto有害説ではbreakとgotoは違うもの扱いしているよ
breakで出来ないことがgotoで出来ること自体を問題視しているのだから
- 563 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:31:46 ID:77XEoAHk.net]
- 誰かそんな説を唱えたのでしょうか。
- 564 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:32:55 ID:77XEoAHk.net]
- 責任者出て来ーーい!!!
- 565 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:33:01 ID:Y+bt1zIi.net]
- >>546
ほう、どう違う扱いをしているんだ?
- 566 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:34:43 ID:y5HKK+ir.net]
- gotoは使わないけどbreakは使うってのがgoto有害説じゃないの?
完全に別の扱いしているってことだろ
- 567 名前:デフォルトの名無しさん [2020/01/23(木) 11:35:44.43 ID:77XEoAHk.net]
- ぐ、ぐ、ぐぅの音も出ない。
- 568 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 11:42:15.74 ID:Y+bt1zIi.net]
- >>550
全然違う まだ答えは書いてやらんぞ
- 569 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 12:29:41 ID:nmx8CMX3.net]
- >>546 も >>539 も同じタイプの馬鹿
選択の幅は広い方がいい 機能の存在を否定するのではなく、単にお前が使わなければいいだけ
- 570 名前:デフォルトの名無しさん [2020/01/23(Thu) 13:56:33 ID:VWfJLmDE.net]
- >>533
+1 ほんそれ
- 571 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/23(Thu) 14:47:05 ID:QRqIx1i6.net]
- break でも goto でもそれを使わなかったときにもっと複雑になるのなら使っていいよ。
クソみてぇなフラグを立ててループから抜けるよりは break の方がマシだろ? 使わなくても十分に良いなら使わない方がいいに決まってるけど、要るときに使わないのは馬鹿げた話。 現実にはクソな道具が役に立つクソな状況があるんだよ。
- 572 名前:デフォルトの名無しさん [2020/01/23(Thu) 15:47:36 ID:tCbubFOj.net]
- do{...}while(0);
とかにしたくないとき while(1){ ...; ...; break; } もたまに意図的に使う
- 573 名前:デフォルトの名無しさん [2020/01/23(Thu) 16:22:12 ID:77XEoAHk.net]
- なにこれ悪行自慢。
- 574 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 16:34:07 ID:Y+bt1zIi.net]
- >>556
breakしなかった場合の動作が違うじゃねえかよ
- 575 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 16:47:49 ID:nmx8CMX3.net]
- >>556
switch(1){ default: }
- 576 名前:デフォルトの名無しさん [2020/01/23(Thu) 16:49:27 ID:77XEoAHk.net]
- 通報しました。
- 577 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:36:57 ID:y5HKK+ir.net]
- forやwhileもgotoのシンタックスシュガーだから使うなみたいな
- 578 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:43:18 ID:y5HKK+ir.net]
- gotoって自由すぎて対応するlabelの場所によって意味が変わるから、自由に飛びたいとき以外に使うと分かりづらくなる。
breakやcontinueなら一連の処理の一部を飛ばすって意図がそれだけでわかるのだから、do{}while(0)だとgoto使うのと何を分かりやすくするかでトレードオフになる
- 579 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 17:47:15.54 ID:Y+bt1zIi.net]
- do{} から以後が、それまでの話と繋がってねえぞ
それから break と continue のGOTO有害説における違いもわかってねえな
- 580 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:51:51 ID:y5HKK+ir.net]
- do while(0)+breakを使う->loopだと誤解する可能性がある
gotoを使う->labelの飛び先見ないと意図がわからない ってどちらの分かりづらさを大きな問題とするかで、どちらが良いかの好みが別れる これがトレードオフ
- 581 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:53:42 ID:y5HKK+ir.net]
- まあdo while(0)と組み合わせるならcontinueの方が良い気もする
やっぱりretryしようと思ったときのために
- 582 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 18:00:56 ID:AdSJ3UeH.net]
- >>562
C++自体自由過ぎるから使わない方が良いぞ
- 583 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 18:04:36 ID:y5HKK+ir.net]
- 自由だから使い所はその自由度が必要なときってだけなのだが。
forのかわりにgotoでループさせる奴は正気じゃない
- 584 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 18:12:02.33 ID:AdSJ3UeH.net]
- 関数もどこに飛ぶかわからないから
使いどころは必要な時だけだな ポインタも同じ
- 585 名前:デフォルトの名無しさん [2020/01/23(木) 18:52:22.63 ID:77XEoAHk.net]
- 関数はgotoと同じ。
- 586 名前:デフォルトの名無しさん [2020/01/23(木) 19:01:50.07 ID:77XEoAHk.net]
- >>566
やはりこれからはRustですか。
- 587 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:09:24.45 ID:nmx8CMX3.net]
- >>570
そうだよ さようなら
- 588 名前:デフォルトの名無しさん [2020/01/23(木) 19:19:26.28 ID:5iKgMbK4.net]
- >>588
後者のbreakはifが付いてないので絶対breakするというなら一緒だが しかし途中のどこかでcontinueが掛かれていると動作が変わる
- 589 名前:デフォルトの名無しさん [2020/01/23(木) 19:21:21.59 ID:5iKgMbK4.net]
- なぜか変なところへ安価が・・・
>>558 後者のbreakはifが付いてないので絶対breakするというなら一緒だが しかし途中のどこかでcontinueが掛かれていると動作が変わる
- 590 名前:デフォルトの名無しさん [2020/01/23(木) 19:22:06.67 ID:77XEoAHk.net]
- goto駆使してcoroutineというパターンは。
- 591 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:22:49.44 ID:nmx8CMX3.net]
- ループする気がないのにcontinueが入る可能性があるのか?
やっぱループ構文をループ以外の目的で使う奴はアホだわ
- 592 名前:デフォルトの名無しさん [2020/01/23(木) 19:23:30.77 ID:5iKgMbK4.net]
- >>564
どうでもいいが do{}while(0);+continue;でもっと難読化するかも知れない
- 593 名前:デフォルトの名無しさん [2020/01/23(木) 19:27:33.29 ID:77XEoAHk.net]
- >>552が答えを書かないのだが。
もしかして答えなんて持っていないのでは。
- 594 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:32:56.95 ID:rYLpH2kU.net]
- function();
何をするかわからないから関数は使うべきじゃない pointer; 何を指し示すかわからないからポインタは使うべきじゃない
- 595 名前:デフォルトの名無しさん [2020/01/23(木) 19:36:22.66 ID:5iKgMbK4.net]
- >>565 に聴いてくれ
- 596 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 20:36:00 ID:Y+bt1zIi.net]
- >>577
あとで、しまったと思ったんだが もう答えを書いてしまっていた 今んとこ、まだ伏せておきたいので どこなのかは書かないから 自分で探せ
- 597 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:32:03.65 ID:bkVRGJlU.net]
- >>553
とかいいつつ古い仕様の範囲で実用してる人をバカにして マウント取って憂さ晴らしするんですねわかります
- 598 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:33:01.52 ID:glYn/cGw.net]
- つまりCPUはgotoの嵐だからクソと
- 599 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:54:05.78 ID:nX/KPrtD.net]
- >>564
どうせdo-whileなんて本来のループとして使うことはまずないんだから、あとは ローカルルールとしてwhile(0)以外禁止とかにすれば十分かと。
- 600 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:13:19.41 ID:HgduJel4.net]
- gotoは高級の中にいきなり低級なことぶちこむから違和感あるんだろ
場当たり的で美しくないね
- 601 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:28:17.91 ID:2vcw1hg/.net]
- まえにSQLパーサを書いたときはgotoがすごく便利だった。
文法をそのままソースに反映できる感じ。 goto嫌いな人たちはどうやって書くのか見てみたい。
- 602 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:35:42.82 ID:M8BvdbFC.net]
- そういえば、まだ構造化されてない昔のBASICは、構造化された今のBASICより人気があったのではないかと思うけど、行番号と goto 文の組み合わせはラベル名を考えなくて済むので便利であった。
そして、BASIC言語は分かり易くて易しい言語と言われていたのだから、goto文自体はそんなに理解や扱いが難しいものではない。 ただし、フローチャートを書いてから組まないと分かりにくいことがあったかも知れない。 逆に、今フローチャートを書く必要がある場面は少なくなったのはgoto分を使わずに書けるようになったからかも知れない。
- 603 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:41:23.96 ID:cHzm9I9L.net]
- ここまで無理やりな擁護してまで使うほどの機能じゃねーだろバカか。
- 604 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:43:47.47 ID:LWLbtpQ/.net]
- gotoとかマクロとか話題に加齢臭漂ってるぞ
もうちょっと食いつく話題選べよ
- 605 名前:デフォルトの名無しさん [2020/01/24(金) 00:03:07.60 ID:M35o3kEk.net]
- >>585
普通にテーブル駆動では。
- 606 名前:デフォルトの名無しさん [2020/01/24(金) 01:08:48.99 ID:nZbbrzXe.net]
- ma
- 607 名前:in関数が呼び出される前にグローバル変数が初期化されますが、
これの初期化順を変更することは可能なのでしょうか? [] - [ここ壊れてます]
- 608 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:09:21.02 ID:/4mdgZLq.net]
- A、B、Cと言う順序で実行されるべき処理が
A、B、Cと言う順序で実行されれば良いのであって それが上からA、B、Cの順で書いてあろうが B, A, Cと書いてあるのをgotoでA、B、Cの実行順にしようが スレッド1、2、3が同期をとりあってそれぞれA、B、Cの順で実行しようが 相違なるコールバック1、2、3がこの順で呼ばれるように仕組まれた上でそれぞれA、B、Cを実行しようが B、Cの実行がラムダ式で書かれていてその定義がAより上にあってAの実行後に呼び出されようが ぜんぜん問題ではない
- 609 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:10:48.48 ID:/4mdgZLq.net]
- 一方gotoなど使わなくとももっと酷い糞はいくらでも作れるのだから
gotoが駄目だと言い張る奴は精神が弱って いるな!
- 610 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:12:30.02 ID:f1L6KzBl.net]
- いや普通にA,B,Cの順で書けよ。
- 611 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:15:32.35 ID:eYFKJ4zI.net]
- >>590
同じ翻訳単位にあれば上から 異なる翻訳単位のグローバル変数の初期化順序は未定義
|

|