C++相談室 part160

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2022/04/15(金) 08:39:32.42ID:WMzvufu2
前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
2022/04/21(木) 17:43:55.51ID:vSoU0DUY
例外を使わずに普通に代数的データ型でエラーを返せば良い
そのためにoptionalやvariantがある
2022/04/21(木) 17:44:34.43ID:Hotp0qqb
例外が嫌われる原因は、はるか遠くのスナイパーに即死させられるからだよ
ある前提ならどこにスナイパーがいてもいいように書く必要があって、そのためには地下の穴を掘り進めて絶対地上に出ないなどの策が必要になる
2022/04/21(木) 17:53:06.42ID:uYH/mfeQ
いや単純に例外がシステムコールだからだろ
動的メモリ確保然りmutexロック然り
意味不明な例え話は必要ない
2022/04/21(木) 18:07:39.87ID:3fppYdMF
pythonの例外は割と好きだわ
c++でチームでやってるときは使わんほうがまあ無難
2022/04/21(木) 18:38:56.67ID:Hotp0qqb
>>114
君が経験不足なだけ
2022/04/21(木) 18:40:53.59ID:/MI4h9k1
え、C++の例外がシステムコールってどういうこと?なんか関係あるの?
2022/04/21(木) 18:45:27.70ID:9qc6sZDy
キャッチオール規制
2022/04/21(木) 18:53:33.55ID:Ex423fK8
>>117
びっくりするくらいC++の知識ない奴がいるよな
たんにネットとか過去の案件からコピペしただけで
そのコードがどういう意味なのかも分からないなんてバカが打ちの会社にいるわ
2022/04/21(木) 18:59:53.52ID:uYH/mfeQ
煽れば1から100まで全部説明して貰えると思ってるんだろう
2022/04/21(木) 19:06:54.50ID:3fppYdMF
シグナル的な話かね
122デフォルトの名無しさん
垢版 |
2022/04/21(木) 19:07:51.99ID:5bVBNknH
例外のどこがシステムコールなんだよw
笑わせんなw
2022/04/21(木) 19:29:12.31ID:Hotp0qqb
経験不足もココまで来ると哀れだな
CPUの例外とかシグナルをC++の例外としてあげることはあるけど、throwやtry/catchにシステムコールは関係ないよ
またsetjmp, longjmpをシステムコールと思ったのかもしれないけど、これらはCの標準関数だよ
2022/04/21(木) 19:38:44.45ID:dzuJ6upO
>>123
>throwやtry/catchにシステムコールは関係ない
sjlj だけが例外の実装ではないのでは?win32api なら SEH とか
2022/04/21(木) 19:40:56.19ID:XLa0Reo3
生娘が多いスレですね
2022/04/21(木) 19:49:07.82ID:ylgd21Wg
GoやRustのように例外のないプログラミング言語もあるように
例外は各言語内の単なる制御の一手法にすぎない
そこにシステムコールというOSの呼び出しは出てこない
2022/04/21(木) 19:53:37.32ID:3fppYdMF
実装としてそれを期待することはあるんじゃねえかなあ
2022/04/21(木) 20:23:53.47ID:dzuJ6upO
>>126
>>124
2022/04/21(木) 21:03:10.33ID:c/plR3QG
少なくともbsd系やlinux系などで例外にシステムコールは一切出てこないな
だから例外とシステムコールは無関係であると断言できる

もしシステムコールがからむ環境があったとしてもそれはその環境独自の問題
C++やその他の言語の例外とシステムコールは無関係
130デフォルトの名無しさん
垢版 |
2022/04/21(木) 21:10:18.22ID:5bVBNknH
>>128
ISO標準の例外処理はどれかわかるよね?
2022/04/21(木) 21:19:47.06ID:oUL8Hy4A
>>124
SEHとC++例外は別物だしMSはC++ならC++例外使えって言ってる
https://docs.microsoft.com/ja-jp/cpp/cpp/structured-exception-handling-c-cpp
SEHは基本的にハードエラーを補足するために使うものだぞ
2022/04/21(木) 23:52:24.64ID:UxG5J1QB
SEHは別にハードエラーに限ったもんじゃないが。
基本的にカーネル側で発生する例外一般であって、DLL周りで発生するのはよく見かけると思う。
2022/04/22(金) 00:45:41.32ID:a+ReXgZI
例外の話しがなんで、SEHの話しになってんだ?

例外って知らないのか?
うちの会社にもいるわ、デバッガに制御が移っただけなのに
例外が〜なんて言ってるバカ
2022/04/22(金) 01:10:17.53ID:+Hg7lfxg
>>133
それは、例外の実装が sjlj しかないという馬鹿がしつこいからだよ
2022/04/22(金) 01:20:20.42ID:fqEw0n+a
C++の例外try throw catchの仕様は
システムコールと一切無関係
2022/04/22(金) 01:27:09.01ID:OAazuPnp
>>135
そんなに必死になるのはなんか理由があんの?
2022/04/22(金) 01:42:30.48ID:BvFOL7Y8
>>134
それ以外に何かあるの?
他では不可能
2022/04/22(金) 01:53:53.59ID:BJPJNuGw
SEHの訳語が構造化例外ハンドリングだから、例外の一種と言えるはずだ。
2022/04/22(金) 02:07:46.66ID:CMih2sNI
C++にはSEHとやら言うものは存在しないし関係ないんじゃね?
2022/04/22(金) 02:36:51.42ID:BJPJNuGw
いや、ゼロ除算やヌルポインタアクセスなどで素朴なC/C++でもSEHが発生することはあり得る。
2022/04/22(金) 02:40:55.00ID:coLCpeOs
お前ら全員、り地域指定な
2022/04/22(金) 02:51:22.19ID:BJPJNuGw
dangerous yofukashi
2022/04/22(金) 05:33:50.18ID:h+Fap4CC
>>132
カーネルで発生してるわけじゃないだろ
よく知らないのに絡んでくるなよ...

>>138,140
>>91から始まる話にSEHは関係ない
2022/04/22(金) 06:10:41.99ID:8e+rCGWk
>>140
C++にはSEHというものはありませんし発生することもありません
勉強して出直してきてください
それまでこのスレに書き込み禁止
145デフォルトの名無しさん
垢版 |
2022/04/22(金) 06:18:31.32ID:Y1J+20vl
VC6の頃はゼロ除算をcatch(...)で捕獲できたな
2022/04/22(金) 06:40:52.54ID:/ALeatGN
ゼロ除算はSIGFPEが発生するから捕捉したかったらsignalでハンドリング関数を指定
例外は全く関係ない
147デフォルトの名無しさん
垢版 |
2022/04/22(金) 06:45:33.62ID:Y1J+20vl
だから昔話だってば
あり得んことが目の前で起きたから
よく憶えてるんだよ
2022/04/22(金) 06:50:31.85ID:HuED6Bkz
どっかの会社の独自拡張だろ
C++の話じゃないな
2022/04/22(金) 06:52:40.42ID:e55dh4X+
蟻人間ってちょいちょい見かけるけどこういうでたらめなやつだったのね
2022/04/22(金) 07:02:53.87ID:kPq/rze/
>>137
>>124
win32api なら SEH, 最近は gcc も SEH に置き換わっているときく
2022/04/22(金) 07:03:35.95ID:kPq/rze/
>>139
それをいうなら sjlj だって同じ
今の流れは例外のインプリメントの話題なのでは?
2022/04/22(金) 07:04:28.01ID:kPq/rze/
>>144
実装方法の話でしょ?sjlj だけ認めて SEH は認めないなんて矛盾してませんか?
2022/04/22(金) 07:21:51.39ID:poIoQlGh
どこかの会社の独自拡張の話をC++の機能だと思い込んでC++スレに持ち込むのはやめましょう
以下の話はここでOKです
setjmp/longjmpはC/C++の標準機能です
signalもC/C++の標準機能です
try/throw/catchはC++の標準構文です
154デフォルトの名無しさん
垢版 |
2022/04/22(金) 07:37:43.45ID:Y1J+20vl
ISO/IEC14882の範疇から一歩たりとも出るなってのは無理だろ
2022/04/22(金) 07:45:58.57ID:Bpn1KdM3
>>154
特定の企業によるその環境下での独自な拡張について
そうであることを認識できず区別できずにC++の機能だと勘違いしてここに書き込むのは完全にアウト
2022/04/22(金) 07:48:49.99ID:zZkpCShI
>>151
setjmpとlongjmpはC標準として参照してるから存在するぞ
157デフォルトの名無しさん
垢版 |
2022/04/22(金) 07:50:39.14ID:Y1J+20vl
書き込んだ本人に悪意がないのにアウトっておまえさんが何かペナルティを課すのか?
普通にそれは違うよと教えてやるのは全然スレ違いじゃないだろ
2022/04/22(金) 07:59:20.08ID:0Q7NQ1lp
発端はこれだよな

>>114
> いや単純に例外がシステムコールだからだろ

違うと皆から指摘されてもここまで延々と続けていて悪質
2022/04/22(金) 08:29:32.01ID:OAazuPnp
>>158
そいつがずっと書いてるとおもってんの?
2022/04/22(金) 08:34:38.92ID:OmhkX7bc
>>159
別人だとしても同罪
C++と関係ない話をずっと続けている悪人
161デフォルトの名無しさん
垢版 |
2022/04/22(金) 08:37:18.75ID:Y1J+20vl
何かさ、C++の実用場面を1つも知らない世間知らずが
自分のためのシェルターを要求してるみたいだな

そんなの当人含め誰の何の役にも立たんのに
2022/04/22(金) 08:48:05.34ID:u/m8ttCW
分かりやすい例え
もしAppleによる独自拡張の話をC++の機能だと思い込んでここで延々と話を続ける人たちがいたら
迷惑だからApple方面のスレでやれ!と怒られるだろ
それと同じことが今ここで起きている
2022/04/22(金) 08:48:50.34ID:OAazuPnp
>>160
罪の意識で死にたくなったってことですか?
止めないですよ
2022/04/22(金) 08:50:00.21ID:OAazuPnp
>>162
親も早死にしたんですか?
2022/04/22(金) 08:59:58.70ID:FOSKJcjg
>>141
ここはり地域w
2022/04/22(金) 09:14:12.23ID:oMnlDCaF
自治厨が延々暴れ続けるのも迷惑なんだが
2022/04/22(金) 09:20:29.23ID:LDoEF43J
SEHってJavaなど色んな言語でMicrosoftが勝手に拡張してるやつだぜ
だからC++の話ではないとまともな人ならわかるはず
168デフォルトの名無しさん
垢版 |
2022/04/22(金) 09:56:02.95ID:kaZmiYOz
SEHってC言語で実装されているWin32API周辺開発でも例外機構を使えるようにしたものじゃないの?
例外機構が備わってるC++でSEHの出番はないと思うけど
169デフォルトの名無しさん
垢版 |
2022/04/22(金) 10:46:47.56ID:Y1J+20vl
一言注意するのは構わんが
同調しないやつがいるからって
言い負かすまでしつこくするのは迷惑だぞ
2022/04/22(金) 11:21:59.53ID:HAxRxWew
マイクロソフトの解説

構造化例外処理 (SEH) は、ハードウェア障害などの特定の例外コードの状況を適切に処理するための、C に対する Microsoft の拡張機能です。 Windows と Microsoft C++ は SEH をサポートしていますが、ISO 標準の c++ 例外処理を使用することをお勧めします。 これにより、コードの移植性と柔軟性が向上します。 ただし、既存のコードまたは特定の種類のプログラムを維持するために、SEH を使用する必要がある場合もあります。

Microsoft 固有:
2022/04/22(金) 11:33:57.93ID:OAazuPnp
>>170
親は何歳で死んだん?
2022/04/22(金) 11:35:01.23ID:oMnlDCaF
自分は正義の味方のつもりでも
周りにとって迷惑なだけなのは
まるでスッパマンだな
2022/04/22(金) 11:38:47.55ID:udIu01iV
勘違いしていたと謝罪すりゃ済むのに逆切れで死の書き込みを繰り返してるやつヤバいな
2022/04/22(金) 11:54:33.77ID:OAazuPnp
>>173
相手が一人という前提なのは、数で勝ってると思い込みたいから?
死んだ親もそういう人だったん?
2022/04/22(金) 12:01:35.35ID:P/jSiaWo
>>174
どこにも一人と書かれていないし前提もないようにみえるけど幻覚が見えているの?
2022/04/22(金) 12:23:58.18ID:BJPJNuGw
大阪弁も日本語だろ。
Win32 C++コンパイラではゼロ除算で浮動小数点例外が発生することも知らんとは。
まさかVirtual C++がC++コンパイラではないと言いたいほさ。
2022/04/22(金) 12:25:23.61ID:oJU3aoBf
Virtual C++?
2022/04/22(金) 12:31:17.16ID:BJPJNuGw
Visual C++ね。
2022/04/22(金) 12:33:13.97ID:6yZvfKA9
ゼロかどうか直前に調べてゼロならthrowすることでどんなコンパイラでもゼロ除算の時に例外を投げることが可能です
つまりコンパイラの問題ではありません
そして誰でもそうすることが出来るというだけでありC++の仕様や機能ではありません
2022/04/22(金) 12:38:40.45ID:wri6W8iQ
>>176

構造化例外処理 (SEH) は……C に対する Microsoft の拡張機能です。

C++でも標準でも無いな。
いつまでスレ違い粘着しているんだよ。
2022/04/22(金) 12:38:40.63ID:BJPJNuGw
ゼロ除算の処理はマシン依存。
だから、コンパイラは構造化例外を発生させてもいい。
これも標準C++に含まれる。
2022/04/22(金) 12:39:26.59ID:T4tFP8Jg
死の書き込みなんか誰もしてねえじゃん
どっちが必死なんだかw
2022/04/22(金) 12:41:11.68ID:wri6W8iQ
???
184デフォルトの名無しさん
垢版 |
2022/04/22(金) 12:56:04.30ID:XRzGPZH0
整数型のゼロ除算は未定義動作じゃろ...
うちの環境(Ubuntu20.04 gcc11)なら不動小数点例外のシグナルが飛ぶが

未定義動作なので絶対に何かが起きるようなことを期待してはいけない
2022/04/22(金) 12:56:17.75ID:NXrQ3EcE
>>181
構造化例外なんてものはC++標準に含まれないよ
2022/04/22(金) 13:11:18.22ID:BJPJNuGw
関西弁は標準日本語ではないが、日本語である。
この辺が難しい話なんだ。

「〜やで」「〜でんねん」と言う言い回しは、標準日本語にはないが日本語ではないと言い切るのは乱暴な話だ。
2022/04/22(金) 13:16:36.73ID:T4tFP8Jg
#pragma onceの話も方言だからダメとか
付き合ってらんね
2022/04/22(金) 13:19:13.76ID:oJU3aoBf
方言だから〜言語標準規格に無いから〜って
そもそも例外がどのように内部実装されているかなんて完全に処理系依存であって
そんなことはわかった上で話してるんじゃないの

あと自分もMSVCのC++例外はSEHの機構を利用して実装されていると聞いたことがある
がググっても公式っぽいのは見当たらないので気のせいかもしれん
そもそも例外がどのように内部実装されているかなんて処理系依存で
そんなことはわかった上で話してるんじゃないの

あと自分もMSVCのC++例外はSEHの機構を利用して実装されていると聞いたことがある
がググっても公式っぽいのは見当たらないので気のせいかもしれん
2022/04/22(金) 13:19:56.10ID:oJU3aoBf
なんか変な感じになったごめん
2022/04/22(金) 13:31:32.71ID:nu5oKQCU
今回の話は>>91から始まる「正常値でない時にvariantやoptionalを返すのと、(try/catchの)例外を投げる(throw)のと、どちらが好ましいか?」という話の始まり

それに対して「例外はコストが余分にかかる」「例外だと複数返ってくる時の扱いやリカバリ等が難しくなる」という話の流れ

その話に対して例外はシステムコールだとか
SEHがどうのこうのだとか
C++と無関係な話をして荒らしている人たちがいる
2022/04/22(金) 13:43:24.93ID:0v5EEVUK
>>190
悔しいのう
2022/04/22(金) 13:51:45.19ID:XCe7UK1Z
SEHがどんな実装で作られていようが魔法はないのだからコストがかかる要因であることは変わりない
したがってこの議論でSEHを持ち出すのは無意味で愚かな行為ではないかな
2022/04/22(金) 14:06:30.94ID:CNGbmw+5
>>158>>160みたいにIDすら理解してないアホが荒らしてるように見えるが
>>160は指摘されても開き直ってるしな
2022/04/22(金) 14:08:07.99ID:BJPJNuGw
♪実装が終わって〜 僕らは入った〜

♪実装を知らない〜 コーダーたち〜さ〜
2022/04/22(金) 14:14:37.92ID:coLCpeOs
り地域のくせになまいきだぞ
2022/04/22(金) 14:16:10.48ID:qlNSP7lI
無関係な話をいつまでも引っ張るWindows君が悪いと思います。
2022/04/22(金) 14:17:32.04ID:Dj0BOi0U
蟻人間、キチガイのフリして矛先をそらそうとしてる?
2022/04/22(金) 14:39:51.55ID:fMqKBQE/
全く無関係な話でもない
見るからに自分が入れない話だからやめろだろ

そういう時は黙ってるか別な話題振ればいいのに
いちいち揉め事にしちまう幼稚なやつ
2022/04/22(金) 14:40:25.86ID:7P+21PvJ
>>123書いて話終わると思って今見たらまだこの話が続いてることに驚き・・・
よほど恥ずかしかったんだな
ID変えてこんなに自演しちゃうなんて
2022/04/22(金) 14:53:14.70ID:Hnq97RMZ
正直、スマンカッタ
例外がシステムコールとか
ほんとすまんかった
単に知ったかしたかっただけで
こんなに大騒ぎになるとは思わなかった
謝罪してこれを訂正に代えさせてください
正直すまんかった
勉強になりました
例外はシステムコールじゃないです
2022/04/22(金) 14:58:45.98ID:58eJLgfI
>>188
>>170
Windows と Microsoft C++ は SEH をサポートしていますが、ISO 標準の c++ 例外処理を使用することをお勧めします。

MSですらSEHよりISO 標準の c++ 例外処理を推奨しているじゃないか。
いつまでもスレ違いをごちゃごちゃ言うなよ。
2022/04/22(金) 15:19:58.07ID:0v5EEVUK
実装、処理系について話さないと決めたのなら話さなけりゃいいのに
2022/04/22(金) 15:33:53.70ID:vco82k5C
元からOSやコンパイラの違いは関係ない話みたいよ

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話の始まり

だからSEHとか無関係なものを持ち出した人がちょっとおかしいわね
2022/04/22(金) 15:36:33.95ID:fMqKBQE/
>>201
標準でない話をするなというのがおまえさんの主張だったはず
それともMSが推奨するからという論点に変えなきゃ都合が悪くなったのか?
2022/04/22(金) 19:27:41.15ID:muq3Mg9B
>>204
なんか日本語不自由だな。
C++でも標準でもMS推奨ですら無いスレ違いの話に粘着するなよ。
2022/04/22(金) 19:48:46.17ID:+Ag0wcTG
推奨法と内部の実装は別の話では??
2022/04/22(金) 19:55:49.60ID:/DhmZAjz
内部の実装とやらでSEH使っている妄想はどうでもいいやろ
どのみちそれ自体の実装はどうなっているの?という話になる
魔法の方法なんて無いのだから途中の各関数毎にデストラクタを実行しながらスタック巻き戻す以外に手は無い
2022/04/22(金) 20:19:32.94ID:g3buRrxh
ここもレベルが下がったね…
2022/04/22(金) 20:49:34.04ID:Hnq97RMZ
         / ̄ ̄ ̄ ̄ ̄\
          |  おまえらも  |
   ∩_∩  |          .|
  (´ー`) <   暇な奴ら  .|
  (   )  |           .|
   | | |   |  だなぁ     |
  (___)__)   \_____/
210デフォルトの名無しさん
垢版 |
2022/04/22(金) 21:23:32.68ID:Y1J+20vl
>>205
ISO/IEC14882から一歩たりとも出るなと言う主張と
C++に関係ある話ならいいじゃんという主張は
平行線だな

勝手に言ってれば? 誰もおまえの鶴の一声に反応しねえけどw
2022/04/22(金) 21:29:04.26ID:5k7+8+kc
持ち出すことで意味があるならばもちろん構わないと思うけど
この今回の件でSEHを持ち出すことに意味あるのかな

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
2022/04/22(金) 21:45:02.53ID:wri6W8iQ
>>210
そんな話はしていない。

SEHはC++でも標準でも無いWindowsローカルのプロプラ技術で、更には当のMSですらC++で使うことを推奨していないようなものなのに、「C++に関係ある話」とか言って無能を晒すなよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況