エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
探検
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
244デフォルトの名無しさん
2019/01/20(日) 21:20:28.02ID:Y8m3wOFq はい誰もコード書かないw
お前らちっさいコードとか異常系の甘いコードしか書いたことないから例外マンセーなんだよ
お前らちっさいコードとか異常系の甘いコードしか書いたことないから例外マンセーなんだよ
245デフォルトの名無しさん
2019/01/20(日) 21:31:17.80 やっぱり例外機構はオカルトだった。皆が長い間この銀の弾丸を装った迷信に惑わされ疲弊した
246デフォルトの名無しさん
2019/01/20(日) 21:52:33.91ID:mVpLWWyp247デフォルトの名無しさん
2019/01/20(日) 22:13:54.05ID:GKseTsKF248はちみつ餃子 ◆8X2XSCHEME
2019/01/20(日) 22:17:29.98ID:/TyOXJfP あのなぁ、俺は他の機能についての話で何度か書いてるけど、
適切な場面で適切に使えってだけの話で、
どんな機能だってそんなに万能だと思ってるやつなんていねぇよ。
どうせ回復できない異常ならちまちまと返却値をとりまわして
上まで運ぶのはクソ面倒くせぇし、
その場で対処する必要があるようなものは
try/catch よりも if で書いた方が短くて簡単だし取りこぼしにくいってのはわかる。
どちらにするべきか判断を付けるコストの方がデカいわっていう場面なら
各プロジェクトのポリシーで一方に決めつけたって別にかまわん。
当たり前すぎて主張するのがアホくさいんだけど、
そんなことは場合によるとしか言いようが無いだろ。
適切な場面で適切に使えってだけの話で、
どんな機能だってそんなに万能だと思ってるやつなんていねぇよ。
どうせ回復できない異常ならちまちまと返却値をとりまわして
上まで運ぶのはクソ面倒くせぇし、
その場で対処する必要があるようなものは
try/catch よりも if で書いた方が短くて簡単だし取りこぼしにくいってのはわかる。
どちらにするべきか判断を付けるコストの方がデカいわっていう場面なら
各プロジェクトのポリシーで一方に決めつけたって別にかまわん。
当たり前すぎて主張するのがアホくさいんだけど、
そんなことは場合によるとしか言いようが無いだろ。
249デフォルトの名無しさん
2019/01/20(日) 22:18:21.76ID:GKseTsKF 異常系の処理がシビアになればなるほど例外が有利になる
リターンコードスタイルは複雑化した分岐と大量の変数のせいでミスを誘発しまくる
例外ならば必要な時に必要なだけ異常系の処理を書けばいいので混乱することはない
例外スタイルにはまったく過不足がない
やりたいことをジャストそのまま書けばよろしい
リターンコードスタイルは複雑化した分岐と大量の変数のせいでミスを誘発しまくる
例外ならば必要な時に必要なだけ異常系の処理を書けばいいので混乱することはない
例外スタイルにはまったく過不足がない
やりたいことをジャストそのまま書けばよろしい
250デフォルトの名無しさん
2019/01/20(日) 22:25:39.40ID:GTDVzsz1 >>248
中身のない長文は要らんよ
中身のない長文は要らんよ
251デフォルトの名無しさん
2019/01/20(日) 22:33:30.46ID:ps+hJNCY 例外はその機構が重いから極端な異常系にしか使わないようにしてるのも今は昔の考え方なのかな
252デフォルトの名無しさん
2019/01/20(日) 22:36:51.24ID:XHg9p3tl253デフォルトの名無しさん
2019/01/20(日) 22:39:23.56ID:GTDVzsz1 >>252
お前もな〜
お前もな〜
254デフォルトの名無しさん
2019/01/20(日) 22:55:26.02ID:GKseTsKF >>251
そもそも正常系では例外の方が速い
そもそも正常系では例外の方が速い
255デフォルトの名無しさん
2019/01/20(日) 23:31:58.94ID:PO2ZqArQ >戻り値スタイルに慣れるとレイヤー境界がどこかも定義せずに例外変換をしてしまうようになっちゃうのかな
レイヤーの境界やエラーの粒度の違いに頓着しないのは、どっちかというと安直に例外投げれば良いと
考えている方のような気がするがな。
この一連の発言見ても、投げた例外が誤ってレイヤー境界を越えてしまわないようどう保証するかなんて
言及してた人いないでしょ。
レイヤーの境界やエラーの粒度の違いに頓着しないのは、どっちかというと安直に例外投げれば良いと
考えている方のような気がするがな。
この一連の発言見ても、投げた例外が誤ってレイヤー境界を越えてしまわないようどう保証するかなんて
言及してた人いないでしょ。
256はちみつ餃子 ◆8X2XSCHEME
2019/01/21(月) 00:00:25.72ID:seIeK7lJ >>251
例外にもいくつかの方式があって、SJLJ ってやつは例外を投げないときもやたら遅いが、
他のほとんどの方式は例外を投げないときはゼロに近いコストのはず。
ただ、 SJLJ 以外の方法というのはデバッグ情報を使うためにツールチェインとの連携が必須だとか、
ハードウェアの機能を使うとかいった制約があって移植性に難があったりもするので、 SJLJ も滅びずに残ってる。
要するに例外の処理速度は場合によるが、
普通のデスクトップコンピュータで SJLJ を使わざるを得ないようなみみっちいツールチェイン、ハードウェアって
ことはあんまりなかろうと思う。 (ある?)
例外にもいくつかの方式があって、SJLJ ってやつは例外を投げないときもやたら遅いが、
他のほとんどの方式は例外を投げないときはゼロに近いコストのはず。
ただ、 SJLJ 以外の方法というのはデバッグ情報を使うためにツールチェインとの連携が必須だとか、
ハードウェアの機能を使うとかいった制約があって移植性に難があったりもするので、 SJLJ も滅びずに残ってる。
要するに例外の処理速度は場合によるが、
普通のデスクトップコンピュータで SJLJ を使わざるを得ないようなみみっちいツールチェイン、ハードウェアって
ことはあんまりなかろうと思う。 (ある?)
257デフォルトの名無しさん
2019/01/21(月) 00:16:50.05ID:xYP7RvSv258デフォルトの名無しさん
2019/01/21(月) 02:42:47.97ID:sP4gcHu6 例外でイベント発生させて、イベントハンドラで受けるのはど?
259デフォルトの名無しさん
2019/01/21(月) 06:13:04.33ID:NbFzEAOW260デフォルトの名無しさん
2019/01/21(月) 07:28:30.34ID:sP4gcHu6 swith caseで分岐する場合もあれば、
関数へのポインタテーブル作って、ジャンプさせる場合もあるわけで、
例外も戻り値分岐も両方普通に使わないか?
C++てイベントとかイベントハンドラは環境とかboost任せで、言語仕様としては未だに確定してないのか?
C++11でようやくマルチスレッドや排他制御が仕様に盛り込まれたり、
テンプレートの仕様いじくるよりこっちの方がよっぽど大事なんじゃないのか?
関数へのポインタテーブル作って、ジャンプさせる場合もあるわけで、
例外も戻り値分岐も両方普通に使わないか?
C++てイベントとかイベントハンドラは環境とかboost任せで、言語仕様としては未だに確定してないのか?
C++11でようやくマルチスレッドや排他制御が仕様に盛り込まれたり、
テンプレートの仕様いじくるよりこっちの方がよっぽど大事なんじゃないのか?
261デフォルトの名無しさん
2019/01/21(月) 08:25:41.60ID:vJCo0PxF >保証は言語側でやってくれるから言及する必要がないだけのこと
保証なんてしないよね?catch忘れたらそのまま上まですっ飛んでいくだけ。
Javaのような検査例外ならそこに差異があることを意識されられるかもしれないけど。
>そもそも例外は>>249の言う通りその場所で必要なものをキャッチして処理をすればいいだけ
そこでプログラマが考える「必要なもの」から漏れた例外は上位へ渡されてしまう。
それを防ぐためには呼び出し先から送られる可能性のあるすべての例外を把握する必要があるが、
検査例外がないなら動的型付言語のように投げる側と受け取る側とで平仄を合わせてやるしかない。
保証なんてしないよね?catch忘れたらそのまま上まですっ飛んでいくだけ。
Javaのような検査例外ならそこに差異があることを意識されられるかもしれないけど。
>そもそも例外は>>249の言う通りその場所で必要なものをキャッチして処理をすればいいだけ
そこでプログラマが考える「必要なもの」から漏れた例外は上位へ渡されてしまう。
それを防ぐためには呼び出し先から送られる可能性のあるすべての例外を把握する必要があるが、
検査例外がないなら動的型付言語のように投げる側と受け取る側とで平仄を合わせてやるしかない。
262デフォルトの名無しさん
2019/01/21(月) 08:37:50.82ID:Kndge7xV 大前提が間違ってる
例外なんか最終的にはフレームワークが最上位で纏めてキャッチすりゃいいんだよ
途中でキャッチして処理するのはあくまでベターなオプションであり、それを必須とするような作りにしてはいけない
例外なんか最終的にはフレームワークが最上位で纏めてキャッチすりゃいいんだよ
途中でキャッチして処理するのはあくまでベターなオプションであり、それを必須とするような作りにしてはいけない
263デフォルトの名無しさん
2019/01/21(月) 08:55:24.27ID:NbFzEAOW264デフォルトの名無しさん
2019/01/21(月) 08:56:49.38ID:vJCo0PxF >>262
半分同意。
結局のところエラーの種類に応じてきっちり対処するなら検査例外的な仕組みが必要になるが
そうでなければエラーの内容など見ずにlet it crash的に対処するしかない。
どっちつかずが一番ダメなやつ。
半分同意。
結局のところエラーの種類に応じてきっちり対処するなら検査例外的な仕組みが必要になるが
そうでなければエラーの内容など見ずにlet it crash的に対処するしかない。
どっちつかずが一番ダメなやつ。
265デフォルトの名無しさん
2019/01/21(月) 08:58:29.41ID:Kndge7xV (検査例外とかいうJava自身も認める失敗作は論外として、)例外機構は正しく使えばエラー処理に対する関心の分離に有効なんだよ。
ところがC++では例外を煩わしいノイズと見做す人が多い。これは即ち関心の分離ができてないわけだ。
その一番の原因は、例外型がロクに標準化されてないことだろうね。
最上位での集約処理を実現するには、下位の全てのコードが制御下になければならない。
これは膨大な既存資産と貧弱な標準ライブラリを持つC++においては非現実的な前提である。
ところがC++では例外を煩わしいノイズと見做す人が多い。これは即ち関心の分離ができてないわけだ。
その一番の原因は、例外型がロクに標準化されてないことだろうね。
最上位での集約処理を実現するには、下位の全てのコードが制御下になければならない。
これは膨大な既存資産と貧弱な標準ライブラリを持つC++においては非現実的な前提である。
266デフォルトの名無しさん
2019/01/21(月) 08:58:39.64ID:unEY8tjt すべての例外を把握する必要はない
回復可能かつ回復が要件に含まれるなら個別に処理すべき
それ以外はアスペクトで処理すればいい
回復可能かつ回復が要件に含まれるなら個別に処理すべき
それ以外はアスペクトで処理すればいい
267デフォルトの名無しさん
2019/01/21(月) 09:04:47.90ID:nVlZ7k5e >>247
だからさ、比較できるように例外スタイルで一度きちっと異常系対応して
かつスーパーエレガントなのを書いてくれよって言ってんの
お前のは体よく異常系の処理全無視してるだけじゃん
catchしたい人が必要なところでcatchすればとか言うんだろうけど
例外発生場所から遠くなればなるだけ何が原因で例外が発生して、
その回避はどうすればいいかが不明瞭になっていくってのは
散々語られてる例外の欠点
リターンコードは泥臭いが下層からくるエラーをどう処理してるかはコード見れば一目瞭然
エラーを上位に伝搬させるか、リカバリーするか、その場でクラッシュさせるか
ローカルに記述が完結できてる
APIとして外部に公開するときもインタフェースの仕様にきっちり責任持たせることができる
ちなみにプルリクでレビューする文化があればエラー無視してるような雑はコードは突き返されるだろう
見ればすぐわかるんだから
大規模な開発を経験したことない人はこういう観点でソフトウェア開発を
考えられないんだよ
最後にもう一度言っておくけどおれは例外を完全否定してるわけじゃねーから
使える場所は限られるって意見ね
だからさ、比較できるように例外スタイルで一度きちっと異常系対応して
かつスーパーエレガントなのを書いてくれよって言ってんの
お前のは体よく異常系の処理全無視してるだけじゃん
catchしたい人が必要なところでcatchすればとか言うんだろうけど
例外発生場所から遠くなればなるだけ何が原因で例外が発生して、
その回避はどうすればいいかが不明瞭になっていくってのは
散々語られてる例外の欠点
リターンコードは泥臭いが下層からくるエラーをどう処理してるかはコード見れば一目瞭然
エラーを上位に伝搬させるか、リカバリーするか、その場でクラッシュさせるか
ローカルに記述が完結できてる
APIとして外部に公開するときもインタフェースの仕様にきっちり責任持たせることができる
ちなみにプルリクでレビューする文化があればエラー無視してるような雑はコードは突き返されるだろう
見ればすぐわかるんだから
大規模な開発を経験したことない人はこういう観点でソフトウェア開発を
考えられないんだよ
最後にもう一度言っておくけどおれは例外を完全否定してるわけじゃねーから
使える場所は限られるって意見ね
268デフォルトの名無しさん
2019/01/21(月) 09:07:50.76ID:nVlZ7k5e269デフォルトの名無しさん
2019/01/21(月) 09:11:48.87ID:nVlZ7k5e 「不正な入力です」
「ネットワークでエラーが発生しました」
「書き込みに失敗しました」
こういう情けないダイアログが表示させて終わりのアプリを作るやつね
「ネットワークでエラーが発生しました」
「書き込みに失敗しました」
こういう情けないダイアログが表示させて終わりのアプリを作るやつね
270デフォルトの名無しさん
2019/01/21(月) 09:19:18.64ID:9okmCQOj >>269
それでも正常に回復できてるならそれでいいケースは多い
例外の最大の利点は例外安全さえ死守できていればアドホックな例外処理が必須でなくなることで、
より丁寧な処理が必要になれば後から追加すればよい
まあ組み込みとかやってる人には馴染まない考え方だろうね
それでも正常に回復できてるならそれでいいケースは多い
例外の最大の利点は例外安全さえ死守できていればアドホックな例外処理が必須でなくなることで、
より丁寧な処理が必要になれば後から追加すればよい
まあ組み込みとかやってる人には馴染まない考え方だろうね
271デフォルトの名無しさん
2019/01/21(月) 09:35:09.59ID:9okmCQOj まあC++開発者が未処理例外=クラッシュと短絡的に考えてしまう気持ちはよく分かるよ
呼び出し階層の途中に一つでも if (hoge() != SUCCESS) errorhandle(); があれば例外安全は破綻するわけで、あまりにも非現実的
呼び出し階層の途中に一つでも if (hoge() != SUCCESS) errorhandle(); があれば例外安全は破綻するわけで、あまりにも非現実的
272デフォルトの名無しさん
2019/01/21(月) 09:54:05.98ID:NbFzEAOW273デフォルトの名無しさん
2019/01/21(月) 10:02:59.35ID:+Z2Zhk1G >>267
> 例外発生場所から遠くなればなるだけ何が原因で例外が発生して、
> その回避はどうすればいいかが不明瞭になっていくってのは
> 散々語られてる例外の欠点
それ戻り値スタイルでも同じだろ
> リターンコードは泥臭いが下層からくるエラーをどう処理してるかはコード見れば一目瞭然
だからそれはすぐ上位で処理することが前提になってるだろ
上位に何度も伝搬したら例外と同じになる上に伝搬するコードをそこら中に書く羽目になる
> ちなみにプルリクでレビューする文化があればエラー無視してるような雑はコードは突き返されるだろう
例外処理を書かないことはエラーを無視するんじゃなくてそのまま上位に伝搬してるだけ
書かないと無視してると取るのは例外をきちんと理解してないってこと
> 見ればすぐわかるんだから
お前の能力がな w
> 例外発生場所から遠くなればなるだけ何が原因で例外が発生して、
> その回避はどうすればいいかが不明瞭になっていくってのは
> 散々語られてる例外の欠点
それ戻り値スタイルでも同じだろ
> リターンコードは泥臭いが下層からくるエラーをどう処理してるかはコード見れば一目瞭然
だからそれはすぐ上位で処理することが前提になってるだろ
上位に何度も伝搬したら例外と同じになる上に伝搬するコードをそこら中に書く羽目になる
> ちなみにプルリクでレビューする文化があればエラー無視してるような雑はコードは突き返されるだろう
例外処理を書かないことはエラーを無視するんじゃなくてそのまま上位に伝搬してるだけ
書かないと無視してると取るのは例外をきちんと理解してないってこと
> 見ればすぐわかるんだから
お前の能力がな w
274デフォルトの名無しさん
2019/01/21(月) 12:21:37.48ID:Di3L4KSP >>267
例外を使いこなせていないね
例外の型とパラメータをみれば何が起こったかはっきりわかる
おそらく君は例外の種類を使い分ける習慣がないだろ?
あったとしてもせいぜい標準ライブラリの例外をなんとなくふり分ける程度だろうね
でないとこんな発言はしないから
まずは例外を定義するところから初めてごらん
それと大規模開発をしたことがないのはそちらだろう
関数コールするたびにずらずらと変数や分岐を書かれたらあっという間に管理不能になる
大規模だからこそ標準的なコード、必要十分なコードというのが大切になる
例外を使いこなせていないね
例外の型とパラメータをみれば何が起こったかはっきりわかる
おそらく君は例外の種類を使い分ける習慣がないだろ?
あったとしてもせいぜい標準ライブラリの例外をなんとなくふり分ける程度だろうね
でないとこんな発言はしないから
まずは例外を定義するところから初めてごらん
それと大規模開発をしたことがないのはそちらだろう
関数コールするたびにずらずらと変数や分岐を書かれたらあっという間に管理不能になる
大規模だからこそ標準的なコード、必要十分なコードというのが大切になる
275デフォルトの名無しさん
2019/01/21(月) 12:52:23.62ID:Di3L4KSP リターンコードスタイルをレビューに出すと袋叩きにされるぞ
・ノイズが多すぎて正常系のレビューが不可能
・同じくどのエラーが上位伝達、エラー変換、共通対応、個別対応なのか見てすぐにわからない
・同じく要件漏れを見落としやすい
・正常系、異常系、判断、伝達などあらゆる要素が密集して強く結合しているため仕様変更があった場合の影響が大きすぎてレビューしきれない
・ノイズが多すぎて正常系のレビューが不可能
・同じくどのエラーが上位伝達、エラー変換、共通対応、個別対応なのか見てすぐにわからない
・同じく要件漏れを見落としやすい
・正常系、異常系、判断、伝達などあらゆる要素が密集して強く結合しているため仕様変更があった場合の影響が大きすぎてレビューしきれない
276デフォルトの名無しさん
2019/01/21(月) 13:00:29.05ID:9okmCQOj277デフォルトの名無しさん
2019/01/21(月) 13:01:15.22ID:9okmCQOj278デフォルトの名無しさん
2019/01/21(月) 13:05:57.47ID:eQbQQa6X レビュアーの経験値不足って感が否めない
279デフォルトの名無しさん
2019/01/21(月) 13:14:15.22ID:NbFzEAOW280デフォルトの名無しさん
2019/01/21(月) 13:20:41.40ID:9okmCQOj281デフォルトの名無しさん
2019/01/21(月) 13:46:08.82ID:NbFzEAOW >>280
ごめん、言ってることがよくわからん
そもそも
if (hoge() != SUCCESS) errorhandle();
なんてコードがあったら戻り値スタイルでもどうしようもない
例外は魔法の杖じゃないんだから何でもかんでも例外使えば解決するわけじゃなくて戻り値スタイルより楽にできるというだけの事だよ
プログラムがデカくなるほどその差は開くけど
ごめん、言ってることがよくわからん
そもそも
if (hoge() != SUCCESS) errorhandle();
なんてコードがあったら戻り値スタイルでもどうしようもない
例外は魔法の杖じゃないんだから何でもかんでも例外使えば解決するわけじゃなくて戻り値スタイルより楽にできるというだけの事だよ
プログラムがデカくなるほどその差は開くけど
282デフォルトの名無しさん
2019/01/21(月) 15:00:28.97ID:9okmCQOj283デフォルトの名無しさん
2019/01/21(月) 15:09:35.03ID:NbFzEAOW284デフォルトの名無しさん
2019/01/21(月) 15:25:30.15ID:9okmCQOj285デフォルトの名無しさん
2019/01/21(月) 15:27:04.68ID:NbFzEAOW 流石に恥ずかしくね? w
286デフォルトの名無しさん
2019/01/21(月) 15:51:37.78ID:GjW/cezm287デフォルトの名無しさん
2019/01/21(月) 16:15:33.27ID:NbFzEAOW で、そんな当たり前のことを言って何が言いたいの?
聞きかじりの知識を披露してるとしか思えないんだが… w
聞きかじりの知識を披露してるとしか思えないんだが… w
288デフォルトの名無しさん
2019/01/21(月) 18:01:37.80 例外機構は宗教
多くの人が正しいと盲信しているに過ぎない
多くの人が正しいと盲信しているに過ぎない
289デフォルトの名無しさん
2019/01/21(月) 21:32:31.75ID:sP4gcHu6 戻り値でイベント投げるという選択肢がない言語使用自体くそじゃね?
290デフォルトの名無しさん
2019/01/21(月) 22:06:05.18ID:5kYBxhZB Cにそんな機能あったっけ?
それとも別の言語の信者が折伏に来ているの?
それとも別の言語の信者が折伏に来ているの?
291デフォルトの名無しさん
2019/01/21(月) 23:00:01.73ID:vJCo0PxF293はちみつ餃子 ◆8X2XSCHEME
2019/01/22(火) 02:54:09.24ID:FdSNzm47 例外の処理速度については、こういう提案もある。
https://ezoeryou.github.io/blog/article/2018-07-10-static-exception.html
要するに、投げるオブジェクトが条件を満たすときは、
暗黙の返却値のような形で例外を伝播する仕組み。
バイナリレベルの取り扱いも ABI を決めさえすれば済むだろうし、
互換性も確保しやすそうに思う。
https://ezoeryou.github.io/blog/article/2018-07-10-static-exception.html
要するに、投げるオブジェクトが条件を満たすときは、
暗黙の返却値のような形で例外を伝播する仕組み。
バイナリレベルの取り扱いも ABI を決めさえすれば済むだろうし、
互換性も確保しやすそうに思う。
294デフォルトの名無しさん
2019/01/22(火) 07:12:53.52ID:c7vqWXz4 どう見ても例外否定派の方が宗教がかってる…
295デフォルトの名無しさん
2019/01/22(火) 08:50:21.38ID:Z/sMOZE7 環境の方の質問NGなら完全スルーでお願いします
Windows8.1 64bit のうえで Windows98SE でも動く C のバイナリを作ろうと思ってるのですが
LSI C 試食版以外に何か良い方法がないかなあと…
Windows98SE の方に Visual C++ 6.0 & SP6 をインストールしても良いのかも知れませんが
DLL の整合性とか不安
VC++ 2005 は iso 持ってるだけ…Windows98SE で動くバイナリが生成できるとか何とか
Windows8.1 64bit のうえで Windows98SE でも動く C のバイナリを作ろうと思ってるのですが
LSI C 試食版以外に何か良い方法がないかなあと…
Windows98SE の方に Visual C++ 6.0 & SP6 をインストールしても良いのかも知れませんが
DLL の整合性とか不安
VC++ 2005 は iso 持ってるだけ…Windows98SE で動くバイナリが生成できるとか何とか
296デフォルトの名無しさん
2019/01/22(火) 09:09:13.74ID:Z/sMOZE7 業務で使った経験は一切ないです
使い捨てレベルのものを書くのが目的です
使い捨てレベルのものを書くのが目的です
297デフォルトの名無しさん
2019/01/22(火) 12:47:22.45ID:beRmTaV+ TEST::TEST()
{
うんたら
}
ってコンストラスタがあって、このクラスにパラメータ付のコンストラスタを追加したいとき
C# だったら
TEST::TEST(int param) : this()
{
増やす機能
}
みたいに書きますが C++ の場合はどうやって書きますか
{
うんたら
}
ってコンストラスタがあって、このクラスにパラメータ付のコンストラスタを追加したいとき
C# だったら
TEST::TEST(int param) : this()
{
増やす機能
}
みたいに書きますが C++ の場合はどうやって書きますか
298デフォルトの名無しさん
2019/01/22(火) 13:28:39.91ID:/wbMKv3O TEST::TEST(int param) : クラスのパラメータ(param)
{
増やす機能
}
{
増やす機能
}
299デフォルトの名無しさん
2019/01/22(火) 14:01:29.45ID:mZt3aCP3300はちみつ餃子 ◆8X2XSCHEME
2019/01/22(火) 14:03:25.02ID:FdSNzm47 >>295-296
LSI-C試食版 って Windows 用どころか MS-DOS (16bit) の、しかもスモールモデルしか作れないじゃん。
使い捨ての、いいかげんな富豪的プログラミングしたらすぐメモリ足りなくなるぞ。
ワイとしては Open Watcom C++ を推すやで。
LSI-C試食版 って Windows 用どころか MS-DOS (16bit) の、しかもスモールモデルしか作れないじゃん。
使い捨ての、いいかげんな富豪的プログラミングしたらすぐメモリ足りなくなるぞ。
ワイとしては Open Watcom C++ を推すやで。
301デフォルトの名無しさん
2019/01/22(火) 14:11:32.02ID:/wbMKv3O302デフォルトの名無しさん
2019/01/22(火) 15:51:04.50ID:DsO4NZlu LSI-Cとかなっつw
昔の勉強用コンパイラといったらこれだったな
昔の勉強用コンパイラといったらこれだったな
303デフォルトの名無しさん
2019/01/22(火) 16:10:30.87ID:3oaAhSoC LS愛ちゃん
305デフォルトの名無しさん
2019/01/22(火) 17:01:23.17ID:8l7UUA+M LatticeCとかBDS-Cとか使ってたわ
306デフォルトの名無しさん
2019/01/22(火) 17:22:22.39ID:beRmTaV+307デフォルトの名無しさん
2019/01/22(火) 18:21:52.81ID:Z/sMOZE7 bcc32c でコンパイルしたバイナリが Win98SE 上で動くことを確認…
Win98SE 上だと Turbo C が動くことを確認…
Open Watcom C++ というのは存じませんでした
確認してみます
Win98SE 上だと Turbo C が動くことを確認…
Open Watcom C++ というのは存じませんでした
確認してみます
308デフォルトの名無しさん
2019/01/22(火) 18:30:45.76ID:hELj0NVW 森公一郎さん、4年前に亡くなってる
309デフォルトの名無しさん
2019/01/22(火) 18:51:51.72ID:c7vqWXz4310デフォルトの名無しさん
2019/01/22(火) 20:54:28.21ID:Z/sMOZE7 DLL hell に躊躇
311デフォルトの名無しさん
2019/01/22(火) 23:43:17.99ID:f8uEJHYw LSI-C試食版www
懐かしいなあ
あの頃はものすごくCPU遅かったよね
486にして感激したからな
もうC言語でプログラムはしたくない
C++だ・・・
懐かしいなあ
あの頃はものすごくCPU遅かったよね
486にして感激したからな
もうC言語でプログラムはしたくない
C++だ・・・
312デフォルトの名無しさん
2019/01/23(水) 03:50:30.92ID:2NaZdHzA コメントに//が使えない時点でもうダメだな俺はw
313デフォルトの名無しさん
2019/01/23(水) 06:49:23.93ID:u7DJzLvn 古いOSでも動作させたいけど、ソースは新しい規格で書きたい、
と言うのは要望としてはありうるな。
>>295 はLSI-C試食版(C89相当だっけ?)を使ってるようだから、
そのクチではないのかも知れんけど。
と言うのは要望としてはありうるな。
>>295 はLSI-C試食版(C89相当だっけ?)を使ってるようだから、
そのクチではないのかも知れんけど。
314デフォルトの名無しさん
2019/01/23(水) 07:14:34.51ID:aGw/aeEH >>310
今時なら仮想マシンでやればいいだけだろ
今時なら仮想マシンでやればいいだけだろ
315デフォルトの名無しさん
2019/01/23(水) 08:57:06.72ID:A4LjhfFf316315
2019/01/23(水) 08:57:45.81ID:A4LjhfFf コメントが複数行にわたる前提ね
317デフォルトの名無しさん
2019/01/23(水) 09:18:31.94ID:NxchbiGL だから何?
それに同意しようがしまいが単一行コメントのときに面倒なのは変わらないよね
個人的にはエディタがコメントの一括付け外しに対応してるなら複数行でも//の方が見やすいと思ってるけど
それに同意しようがしまいが単一行コメントのときに面倒なのは変わらないよね
個人的にはエディタがコメントの一括付け外しに対応してるなら複数行でも//の方が見やすいと思ってるけど
318デフォルトの名無しさん
2019/01/23(水) 09:36:35.20ID:WSWjtujW C言語の a=b; って
アセンブラで言うと、メモリ→レジスタ→メモリって移し替えてるのと同じ?
メモリ→メモリにデータコピーする時って、必ずレジスタを経由しないとだめなのかな?
アセンブラ勉強初めたばっかで何言ってんだこいつ的な感じだったらごめん。
アセンブラで言うと、メモリ→レジスタ→メモリって移し替えてるのと同じ?
メモリ→メモリにデータコピーする時って、必ずレジスタを経由しないとだめなのかな?
アセンブラ勉強初めたばっかで何言ってんだこいつ的な感じだったらごめん。
319はちみつ餃子 ◆8X2XSCHEME
2019/01/23(水) 10:06:54.98ID:+T2/7smM >>318
CPU の種類による。
アセンブラはアセンブラという言語の規格があるわけではなくて、
各コンピュータの機械語の単語を便宜的に読みやすい書式に置き換えた
ものの総称なので、使える命令は各アーキテクチャのデザインに従うし、
書式のバリエーションもある。 いくつかの伝統的な習慣はあるけれど。
データの移送にレジスタを経由しなければならないようなデザインの CPU もあるし、
そうでないものもある。
メモリアクセスをする命令とその他演算の命令を明確に分離するようなデザインの
アーキテクチャを特に Load?store architecture と呼んでる。
https://en.wikipedia.org/wiki/Load%E2%80%93store_architecture
コンピュータの設計の根本を左右する方針の違いなので、
理解があやふやとはいえ、ここに引っかかりを感じたというのは才能を感じる。
CPU の種類による。
アセンブラはアセンブラという言語の規格があるわけではなくて、
各コンピュータの機械語の単語を便宜的に読みやすい書式に置き換えた
ものの総称なので、使える命令は各アーキテクチャのデザインに従うし、
書式のバリエーションもある。 いくつかの伝統的な習慣はあるけれど。
データの移送にレジスタを経由しなければならないようなデザインの CPU もあるし、
そうでないものもある。
メモリアクセスをする命令とその他演算の命令を明確に分離するようなデザインの
アーキテクチャを特に Load?store architecture と呼んでる。
https://en.wikipedia.org/wiki/Load%E2%80%93store_architecture
コンピュータの設計の根本を左右する方針の違いなので、
理解があやふやとはいえ、ここに引っかかりを感じたというのは才能を感じる。
320デフォルトの名無しさん
2019/01/23(水) 15:54:30.09ID:WSWjtujW >>319
自分が勉強してたCPUがたまたまレジスタ必要とするものだったということですね。ありがとうございます。
あと、intelとryzenは、どちらのCPUであっても殆どのソフトは動作しますが
この2つのCPUのアーキテクチャオペランドは同じということでしょうか?
ゲームなんかは高速化の部分でアセンブラ使う場所も頻繁にあるんじゃないかなと思うのですが。
自分が勉強してたCPUがたまたまレジスタ必要とするものだったということですね。ありがとうございます。
あと、intelとryzenは、どちらのCPUであっても殆どのソフトは動作しますが
この2つのCPUのアーキテクチャオペランドは同じということでしょうか?
ゲームなんかは高速化の部分でアセンブラ使う場所も頻繁にあるんじゃないかなと思うのですが。
321デフォルトの名無しさん
2019/01/23(水) 16:07:56.74ID:WSWjtujW すみません自己解決。
x64ですね。
x64ですね。
322デフォルトの名無しさん
2019/01/23(水) 22:57:36.31ID:A4LjhfFf >>317
wwww
逆に、だから何?
エディタが/* 入力と同時に
*/ を自動挿入してくれるなら全く変わらないだろ
それともおまえのエディタは / 入力で
もひとつ/ を自動挿入するように設定でもしてるのか?
ゆとりもここまで来るとどーしよーもねーな。
wwww
逆に、だから何?
エディタが/* 入力と同時に
*/ を自動挿入してくれるなら全く変わらないだろ
それともおまえのエディタは / 入力で
もひとつ/ を自動挿入するように設定でもしてるのか?
ゆとりもここまで来るとどーしよーもねーな。
323デフォルトの名無しさん
2019/01/23(水) 23:18:56.27ID:A4LjhfFf >>318
>>319
状況によるが、
a = b;
はメモリを介せず、できるだけレジスタ間コピーになるように最適化される。
んでメモリ to メモリを許すのはCISCと相場が決まってる
RISCはメモリ to メモリは命令にない 。命令セットを減らしてるからこそ reduce
このおかげで回路が簡単になり、所用クロック数をほぼ等しくして、クロック(Hz)をあげることができた。
このタイプはメモリ→レジスタ→メモリとせざるを得ない
今は、パイプラインを深くして、CISCでもクロックをあげられるようになったのでRISC/CISCはあんまり関係なくなった。
CICSの代表はx86なのでメモリ→メモリ命令セット調べてみ。
CISCの歴史的な経緯がわかるのは、これもCISC代表のx68kやH8は、命令セットごとに大幅に所用クロック数が違う。
それに対してx86の流れをくむ最新設計のRL78だとほとんどの命令セットが1クロックとなって。RISCと変わらない上に、
メモリ to メモリが可能となってる。それでも メモリ to レジスタに比べて1クロック増えてる。
メモリ to メモリ とレジスタ to メモリを同クロック数で実行しようとするなら、 バスラインがもう一組(例えば32bit)必要になった上に、
2ポートメモリが必要になってしまうwwww
>>319
状況によるが、
a = b;
はメモリを介せず、できるだけレジスタ間コピーになるように最適化される。
んでメモリ to メモリを許すのはCISCと相場が決まってる
RISCはメモリ to メモリは命令にない 。命令セットを減らしてるからこそ reduce
このおかげで回路が簡単になり、所用クロック数をほぼ等しくして、クロック(Hz)をあげることができた。
このタイプはメモリ→レジスタ→メモリとせざるを得ない
今は、パイプラインを深くして、CISCでもクロックをあげられるようになったのでRISC/CISCはあんまり関係なくなった。
CICSの代表はx86なのでメモリ→メモリ命令セット調べてみ。
CISCの歴史的な経緯がわかるのは、これもCISC代表のx68kやH8は、命令セットごとに大幅に所用クロック数が違う。
それに対してx86の流れをくむ最新設計のRL78だとほとんどの命令セットが1クロックとなって。RISCと変わらない上に、
メモリ to メモリが可能となってる。それでも メモリ to レジスタに比べて1クロック増えてる。
メモリ to メモリ とレジスタ to メモリを同クロック数で実行しようとするなら、 バスラインがもう一組(例えば32bit)必要になった上に、
2ポートメモリが必要になってしまうwwww
324デフォルトの名無しさん
2019/01/23(水) 23:20:08.21ID:A4LjhfFf325デフォルトの名無しさん
2019/01/23(水) 23:21:30.54ID:MK/3pF0O >>322
自分で複数行が前提だと言っときながら何言ってんの君
自分で複数行が前提だと言っときながら何言ってんの君
326デフォルトの名無しさん
2019/01/24(木) 00:07:57.67ID:sZmPY6bv >>325
*/の自動補完は複数行だろうが単一行だろうが関係ないだろが。
おまえがエディタ支援による入力補助を持ち出したから応じてやっただけだろゆとり
入力の手間はむしろ/* */の方が楽なんだよお馬鹿さん
*/の自動補完は複数行だろうが単一行だろうが関係ないだろが。
おまえがエディタ支援による入力補助を持ち出したから応じてやっただけだろゆとり
入力の手間はむしろ/* */の方が楽なんだよお馬鹿さん
327デフォルトの名無しさん
2019/01/24(木) 00:17:17.17ID:sZmPY6bv328はちみつ餃子 ◆8X2XSCHEME
2019/01/25(金) 04:31:55.12ID:D9LdM3uI まあ例えばインテルアーキテクチャでも、
機械語の命令列を内部で μop に分解して最適化してから実行したりするので、
機械語のレベルなんてまだまだ高級な層。
内側では RISC 的なデザインとも融合していて
正直言って、そこで何が起きているのか正確に理解するのは無理。
(結果に影響しない範囲で) 命令を並べ替えることすらあり、
しかし、マルチスレッドと絡むとわけわかんなくなりがち。
Z80 の牧歌的な世界を知ってると隔世の感がある。
実際、演算能力で言えば何百倍とか何千倍とかいう規模で違うもんな……
機械語の命令列を内部で μop に分解して最適化してから実行したりするので、
機械語のレベルなんてまだまだ高級な層。
内側では RISC 的なデザインとも融合していて
正直言って、そこで何が起きているのか正確に理解するのは無理。
(結果に影響しない範囲で) 命令を並べ替えることすらあり、
しかし、マルチスレッドと絡むとわけわかんなくなりがち。
Z80 の牧歌的な世界を知ってると隔世の感がある。
実際、演算能力で言えば何百倍とか何千倍とかいう規模で違うもんな……
329デフォルトの名無しさん
2019/01/25(金) 04:48:14.16ID:RBnOR415 Z80Aで、おおむね4Mhzだったような
無印Z80は知らない
日本人だとZ80AよりμPD870Cの方が普及???
無印Z80は知らない
日本人だとZ80AよりμPD870Cの方が普及???
330デフォルトの名無しさん
2019/01/25(金) 05:29:09.86ID:VVNAHEZ9331デフォルトの名無しさん
2019/01/25(金) 09:28:14.11ID:U8XeH6tm >>328
自分もこの結論に達した
自分もこの結論に達した
332デフォルトの名無しさん
2019/01/26(土) 10:50:23.69ID:ibgF9MiT 初心者です
関数の引数の1つとして3種類の構造体を受け入れたいという場合オーバーライドで3つ書くのよりスマートなやり方ありますか?
関数の引数の1つとして3種類の構造体を受け入れたいという場合オーバーライドで3つ書くのよりスマートなやり方ありますか?
333デフォルトの名無しさん
2019/01/26(土) 11:07:13.35ID:MaEquCGy オーバーロードで3つ書く方がスマートですよ
334デフォルトの名無しさん
2019/01/26(土) 11:19:38.97ID:UuAHSy+r 関数テンプレートというものが一応存在する。
tempate<class T> void func(T arg)
{
...
}
このように記述すると、型に応じたオーバーライドをコンパイラが自動で作成してくれるという機能。
ただ、実際に呼び出すコードを書かないと(型が確定してないから)コンパイル対象にならなず限定的なエラーチェックしか行われない、
エラーが出た時に問題が関数内なのか呼び出し元なのかが分かりづらい、エラーメッセージもわけわからない、という欠点があるので、
あまり初心者向きとは言えない。すごく便利なんだけどね。
tempate<class T> void func(T arg)
{
...
}
このように記述すると、型に応じたオーバーライドをコンパイラが自動で作成してくれるという機能。
ただ、実際に呼び出すコードを書かないと(型が確定してないから)コンパイル対象にならなず限定的なエラーチェックしか行われない、
エラーが出た時に問題が関数内なのか呼び出し元なのかが分かりづらい、エラーメッセージもわけわからない、という欠点があるので、
あまり初心者向きとは言えない。すごく便利なんだけどね。
335デフォルトの名無しさん
2019/01/26(土) 13:38:51.24ID:ibgF9MiT336デフォルトの名無しさん
2019/01/26(土) 17:08:07.75ID:a/6Wmtam337デフォルトの名無しさん
2019/01/26(土) 18:04:32.62ID:wmp8xlgD 結局中で分岐だろ
338デフォルトの名無しさん
2019/01/27(日) 04:46:54.79ID:tVyD3cTv339デフォルトの名無しさん
2019/01/27(日) 23:53:20.30ID:PNYmCs1E 投機実行がセキュリティホールになるなんて
当時の技術者は予見できたのだろうか
当時の技術者は予見できたのだろうか
340デフォルトの名無しさん
2019/01/30(水) 21:22:57.38ID:pEOkr0Qg いやー
論文ネタに困った情報系の役にたたん学者がひねり出したネタだろ
投機実行を攻撃に使った実例なんてあるのか?
論文ネタに困った情報系の役にたたん学者がひねり出したネタだろ
投機実行を攻撃に使った実例なんてあるのか?
341デフォルトの名無しさん
2019/01/31(木) 10:11:52.05 煽ってたら論文ネタに困った情報系の役にたたん学者が投機実行を攻撃に使った実用法をひねり出したらどうすんだ
>>340
手元にようやく SandyBridge(IvyBridge) を確保しましたのでいろいろ試してみようと思っています
手元にようやく SandyBridge(IvyBridge) を確保しましたのでいろいろ試してみようと思っています
343デフォルトの名無しさん
2019/01/31(木) 23:07:28.54ID:sIpyZVmV Googleだったっけ、見つけたのは?
役に立たない暇な部門があったんだ
役に立たない暇な部門があったんだ
344デフォルトの名無しさん
2019/02/02(土) 08:27:42.12ID:tJohl//6 C++って未だにasync,awaitがないんだな?
江添とかtemplate使えないC++プログラマはポインタを使えないCプログラマと同じゴミとかいってるんだが、
templateは確かに面白いし頭の体操になるけど、templateはひな形があれば、泥臭くエディタちょい編集して使い回したり、
yacc/lex使うとか、ループのアンロールはスクリプトで展開するとかいくらでも手段はあるので、
どう考えてもasync,awaitあたりの実装の方が重要だと思うけどな。
江添とかtemplate使えないC++プログラマはポインタを使えないCプログラマと同じゴミとかいってるんだが、
templateは確かに面白いし頭の体操になるけど、templateはひな形があれば、泥臭くエディタちょい編集して使い回したり、
yacc/lex使うとか、ループのアンロールはスクリプトで展開するとかいくらでも手段はあるので、
どう考えてもasync,awaitあたりの実装の方が重要だと思うけどな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 自閉症が「んなっしょい」と連呼するお🏡
- 押井守の映画「天使のたまご」が4Kリマスターされて上映されるみたいなんだけどこれ面白いの? [268718286]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
