[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/25 06:12 / Filesize : 214 KB / Number-of Response : 1028
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part147



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ほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

↑え?だってお前、普通ダイナミックリンクするだろ?
"ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**

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
同じ翻訳単位にあれば上から
異なる翻訳単位のグローバル変数の初期化順序は未定義

612 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 06:17:01 ID:z1Jr3gge.net]
>>590
やり方としては >>594 のとおり。
「同じ翻訳単位」とは要するに1個のソースファイルってことね。

でも一般的には「グローバル変数の初期化順序に依存すべきではない」
はずだけど、初期化順序を制御したい事情に興味があるわ。
もっと一般的には「グローバル変数を使うべきでない」だけど、それは別のお話。



613 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 06:24:04 ID:3pA3r7pN.net]
初期化順序を制御したい事情なんていくらでもあるだろ

そういう事情があるにも関わらず
明示的な初期化処理で初期化しないのが問題なのであって

614 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 07:10:40 ID:O5UIpEDM.net]
>>585
SQLってBNFで書けるから普通にswitchで書けると思うけど

615 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 07:19:43 ID:3pA3r7pN.net]
書ける書けないと
適する適さない
は別

616 名前:585 mailto:sage [2020/01/24(金) 07:49:27 ID:1D9sTu/S.net]
>>589
ツール使ってテーブルを生成させるならありだと思う。
そうでないなら、文法拡張のためにテーブルに手を入れるとか考えるだけでも嫌にならない?
あと、メンテナ交代のためにつくるドキュメントとかも。
>>598
それな

617 名前:デフォルトの名無しさん [2020/01/24(金) 10:04:25 ID:M35o3kEk.net]
コンパイル時生成では普通。

618 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:24:16 ID:O5UIpEDM.net]
>>598
いや、わざわざgotoなんて使う必要ないって話な
C言語の時はエラー処理でgoto使う機会もあったけどC++なら例外で対処できるし
パーサーとか書いたことないとわからんかも知れんが

619 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:25:13 ID:O5UIpEDM.net]
>>599
ツール使うならコードまで生成させるだろ

620 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:33:56 ID:pOzkcTtY.net]
breakやらgotoやら、普通に関数作ってreturnすらば済む話なのになんでここまで盛り上がるかねぇ

621 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:38:12 ID:nymKNYgW.net]
>>601
わざわざgotoってのが意味不明
使用リソースや所要時間は非常に少ない
ただのジャンプ命令だから

少なくとも
わざわざ関数に分けるとか
わざわざ変数を使うとか
に比べればはるかに軽い

breakに比べれば
記述量が多いので
「わざわざ」という表現を使うことはあるだろう

622 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:42:44 ID:pOzkcTtY.net]
>>604
そんなエラーをgoto文で書いてる様なc++ソース読むのやだわw



623 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:47:41 ID:nymKNYgW.net]
無能自慢か

624 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:48:34 ID:j8mERSyw.net]
throwと同様の構文でgotoと同じコード生成する機能があれば良いのに

625 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 13:03:30 ID:O5UIpEDM.net]
>>604
タイプ量が少ないソースがいいソースとか思ってそうw

いつの時代の人なんだよ

626 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 13:43:32.45 ID:Jh2W8wsF.net]
わざわざ例外使わんでもgotoで十分なときも普通にある
gotoだから絶対ダメとか思ってそう
頭かたすぎ

627 名前:デフォルトの名無しさん [2020/01/24(金) 13:59:14 ID:M35o3kEk.net]
法律で禁止するべきだな。

628 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 14:45:38 ID:xfkHfIRp.net]
>>603
ループの途中での return か?

629 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:31:56.03 ID:NCsnJFfw.net]
>>609
逆にわざわざgoto使う例外って何よ?

そんな個別情報も渡せない上にわざわざラベル名前まで考えて、goto文使う方がめんどくさいだろ

あーあれか、throwよりgotoの方が打つ文字少ないから楽とかかw

630 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:34:37.54 ID:xfkHfIRp.net]
throw って、入れる catch を RTTI を使って探すという
結構なコストのかかることをするが goto や longjmp にはそれがない

631 名前:デフォルトの名無しさん [2020/01/24(金) 16:36:03.61 ID:M35o3kEk.net]
情報処理の教育を受けていると、大抵のものはステートマシンに見えるので、goto使いたくなるのかもしれない。
教育の有無で思考過程が違うので、使い道が理解できない人は使うことを禁じたほうが良い。
セキュリティにもかかわるので公安委員会直轄でgoto免許試験場を創設するべき。

632 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:58:54 ID:Jh2W8wsF.net]
>>612
情弱かよw
「c++ goto 例外」でググれば検索結果の最初のほうだけでもこんなに出てくる

tomeapp.jp/archives/1029
www.thinkridge.com/modules/tinyd1/content/index.php?id=7
https://marycore.jp/coding/idioms-and-alternatives-for-goto-statement/
https://qiita.com/IL_k/items/2549cf2b3058a8e6c954
www.nurs.or.jp/~sug/soft/super/goto.htm



633 名前:デフォルトの名無しさん [2020/01/24(金) 17:00:51 ID:M35o3kEk.net]
>>615
一番上のリンクだけ見ましたが、これはミスリードじゃないだろか。

634 名前:デフォルトの名無しさん [2020/01/24(金) 17:06:28 ID:M35o3kEk.net]
>>616
二番目のリンクも見ましたが、これはgoto代わりに例外を使うべきではないというお話ですよね。
例外の代わりにgoto使えという話ではないと思うんですよ。
「あれ?ifの代わりに例外使えるんじゃね?」とはならない。
同様に「あれ?gotoの代わりに例外使えるんじゃね?」ともなりません。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<214KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef