C++相談室 part160

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2022/04/15(金) 08:39:32.42ID:WMzvufu2
前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
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++に関係ある話」とか言って無能を晒すなよ。
213デフォルトの名無しさん
垢版 |
2022/04/22(金) 21:52:01.01ID:Y1J+20vl
>>212
MSはC++で使うことを推奨していないんだよな?
C++で使うことをw

関係ある話じゃんwww
2022/04/22(金) 22:04:57.79ID:86QhKiKT
>>213
ばかなことはやめて建設的に行こうせ
元の>>211の議論でSEHを持ち出すことで何か有意義な展開が有るのか否か
2022/04/22(金) 22:11:14.70ID:BJPJNuGw
司会者を無視して議論の方向性を勝手に設定するというのが建設的じゃないんだよ。
2022/04/22(金) 22:13:35.43ID:h+Fap4CC
そもそもSEHはC言語で使うためのものだし...

構造化例外処理 (SEH) は、ハードウェア障害などの特定の例外コードの状況を適切に処理するための、C に対する Microsoft の拡張機能です。
https://docs.microsoft.com/ja-jp/cpp/cpp/structured-exception-handling-c-cpp?view=msvc-170
2022/04/22(金) 22:15:13.75ID:BJPJNuGw
CライクなVisual C++でもSEHを使えるよ。
2022/04/22(金) 22:16:17.57ID:wri6W8iQ
>>213
「MSはSEHをC++で使うことを推奨していない」みたいなクソを「C++と関係ある話」として話したいのか?
意味不明なことを言って無能を晒すなよ。
2022/04/22(金) 22:23:11.84ID:BJPJNuGw
「「日本政府は関西弁を国語で使うことを推奨していない」みたいな関西弁を「日本語と関係ある話」として話したいのか?
意味不明なことを言って無能を晒すなよ」

関西弁は日本語と関係あります。
関西弁をバリバリ使ってる現場はあります。
C++でもSEHをバリバリ使ってる現場はあります。
それは普通じゃない? 特殊環境を許容しない偏屈な野郎ですか?
議論を避けたいもぐりの詭弁ですね。
2022/04/22(金) 22:25:30.56ID:a+ReXgZI
例外の有益性云々よりも、会社ではその環境によっては使わないほうが無難
既存のプロジェクトでしか、ソースを触れなくて
hello worldすらかけない奴なんているし

この前もちょっと質問受けたから、サンプルを書いて送ったら、
これどうやってビルドするの?から始まった・・・

そんな奴に例外がどうとか言ってもな〜
2022/04/22(金) 22:27:28.43ID:KvTzeQ4l
>>211
例外の方がコストが高いしハンドリングもしにくいので例外の方が完敗との流れだった
そこへ意味なくSEHを持ってきても議論も結論も何ら変わらないのではないか
2022/04/22(金) 22:29:30.61ID:BJPJNuGw
https://github.com/katahiromz/Hello/blob/main/hello16/hello16.cpp

ほら見ろよ。モグリ。C++の拡張子.cppでSEHをバリバリ使ってるぜ。
2022/04/22(金) 22:34:27.64ID:qbUdPk38
>>222
main()しかないコードを唐突に持ち出してきて頭大丈夫かね??
コード読めない人?
2022/04/22(金) 22:37:06.57ID:wri6W8iQ
>>219
なら>>214に関連した話をしろよ。
SEHを持ち出すことで、>>211についてどういう有意義な話ができるのか?

SEHについては今までC++と関係の無いクソみたいな話しか繰り返していないだろ。
2022/04/22(金) 22:38:25.06ID:BJPJNuGw
>>223
貴様にもわかるよう、カンタンな例示をしたまでだ。
反論できなくなると人格攻撃か。業界全部を見てきたように「C++ではSEHは使えない。関係ない」なんて言うなよ。
2022/04/22(金) 22:41:57.59ID:WSHOJJH7
マイクロソフト公式で使わないことを推奨しているのに
蟻人間とかいう物体はそれを理解できないのかしら
2022/04/22(金) 22:43:24.19ID:BJPJNuGw
>>226
アホ。それは一般ユーザ向けの話で、OS内部では死ぬほど使われてるぜ。
2022/04/22(金) 22:48:37.18ID:Iw7UiXr/
今回の件でSEHを取り上げることに意味があるのかね?

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
2022/04/22(金) 22:50:11.36ID:BJPJNuGw
>>228
その議論は「実測しろ」で済む話。
2022/04/22(金) 22:52:46.51ID:BJPJNuGw
実装の分析を放棄するなら、実測しかないじゃねーか。
2022/04/22(金) 22:53:00.68ID:+MX6gHfh
>>229
あんさんアホなんやな
何をどうやって実測しまんねん
2022/04/22(金) 22:56:26.62ID:gE/jtm5P
例外機構はコストかかるしtry catchで扱いにくいから
最近の言語GoやRustなどではtry catchを廃止しちゃったほどだよ
2022/04/22(金) 22:58:31.59ID:BJPJNuGw
>>231
そんなん当たり前。世界中のパソコンを一箇所集めて、例外を使ってるすべてのコードをGitHubからダウンロードして、全コンパイラで試すと、一般的な答えが出るだろう。

だから具体的な環境と具体的なコードがないと議論自体が無意味だろう。
2022/04/22(金) 23:14:29.58ID:dPkl4IXq
実測なんかしなくてもtry/catchの準備が入る例外の方が遅いのは分かりきった話
2022/04/22(金) 23:14:59.45ID:BJPJNuGw
「男は卑怯」とか「血液型A型はまじめ」とか、統計上の母集団も不明なものを一般化して議論するのははっきり言ってめんどい。

一般化バカなんじゃねーの?

もっと具体的なこと。花を買うなどという具体的な処理を考えたら、そのコストの程度もわかるというもの。
2022/04/22(金) 23:17:04.04ID:hyDwnnZt
>>229
議論の仕方を知らない餓鬼かよ。

SEHを持ち出したのは>>124で、それに対して>>131という反論が来ているんだから、「SEHはC++例外の議論に有意義」と主張するならまず>131に対して反証しろよ。
それを無視して>>229とか>>233みたいな誤魔化しをするやつは、ろくに説明できない無能か相手を騙そうとする詐欺師のどちらかとしか言えんわ。

SEHはNGワード指定したほうが良さそうかね。
2022/04/22(金) 23:21:40.20ID:BJPJNuGw
C++例外がSEなんちゃらで実装されていたこともあった。概念としてはC++例外とSEなんちゃらは別物だが、実装としては排他的ではない。
2022/04/22(金) 23:35:03.38ID:7/N/KhH6
>>237
ソースを出せ
そもそもthrowを投げてcatchする仕組みにMicrosoftの独自拡張など不要
他の様々なOSではそんなものがなくても実装されて動いている
2022/04/22(金) 23:37:23.52ID:BJPJNuGw
例外にオーバーヘッドがあって遅いのはわかってる。アセンブリと実測から明らかだ。
2022/04/22(金) 23:41:51.93ID:qu0GkJrX
>>228
そのケースは明らかに例外を使わないほうが良い
一般的にも例外は可能な限り使わないこと
2022/04/22(金) 23:45:15.50ID:BJPJNuGw
>>238
ソース。
https://docs.microsoft.com/ja-jp/cpp/cpp/errors-and-exception-handling-modern-cpp?view=msvc-170
>Microsoft C++ コンパイラ (MSVC) では、C++ 例外が SEH 用に実装されています。
2022/04/22(金) 23:47:28.49ID:a+ReXgZI
msvcって使ってるところあるの?
2022/04/22(金) 23:53:29.79ID:BXakpDUE
>>241
SEHで実装されているとは、書いてないじゃん
2022/04/23(土) 00:07:15.99ID:IwDNjbNY
>>243
https://twitter.com/kekyo2/status/1429983729062092810
MSVCのソースはハッキングしないとわからん。
https://twitter.com/5chan_nel (5ch newer account)
2022/04/23(土) 00:13:13.27ID:IwDNjbNY
>>242
MSVCは現在のVisual C++のコンパイラと同じだよ。メチャクチャ使われてるよ。
2022/04/23(土) 00:15:14.42ID:MPqhbUj7
結局SEHで実装されているソース無し
2022/04/23(土) 00:16:54.58ID:IwDNjbNY
>>246
RaiseException関数はSEH機構の一部だから。
2022/04/23(土) 00:20:14.06ID:pT174lS4
>>241
それ /EHa があるよって話じゃね?
2022/04/23(土) 00:38:44.27ID:xfOxaVue
最近QZみないな
り地域に帰ったのか?
2022/04/23(土) 01:24:18.22ID:SYxYtQka
https://docs.microsoft.com/ja-jp/cpp/build/exception-handling-x64?view=msvc-170

これがSEHと同一のものであるかどうかは知りませんが
2022/04/23(土) 04:08:45.81ID:9ogfm+bK
>>234
「try/catchの準備が入る」なんて実装はもう廃れて最近のコンパイラには当てはまらないかと。
252デフォルトの名無しさん
垢版 |
2022/04/23(土) 06:09:11.45ID:dPWgl1lf
>>214
おまえさん個人にとって有意義でなくても
C++におけるSEHの話をしている人にとっては有意義なんだよ
だから話すんだよ

自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな
2022/04/23(土) 06:15:24.18ID:nWwnCTH/
キャッチオール!!
2022/04/23(土) 10:39:59.87ID:8yvdC+t8
SEHはマイクロソフトがC言語で例外を扱えるように独自拡張したもの
例外機構のあるC++では当然不要
だからマイクロソフトもC++ではSEHを使わないようにと公式に推奨している
ここC++スレでSEHを持ち出す人はバカ
2022/04/23(土) 10:49:10.48ID:PaneGw8k
>>254
お前がバカ
2022/04/23(土) 11:06:26.27ID:BMKo0y1z
まだsehの話ししてんかよ
ヤフーニュース見てみろよ、大変なことが起きているのに
おまえら暇だな
2022/04/23(土) 11:12:38.87ID:AdmKZSgb
>>256
どうせくだらんニュースばかり
毎日細かく追うのは無駄でアホ
2022/04/23(土) 11:27:56.93ID:t0MIUzKt
>>256
論点のすり替えすんなよ
頭わるいぞ
2022/04/23(土) 11:28:12.87ID:F6Lb3Bw6
荒れていますね、理想の雰囲気です…満足、満足
2022/04/23(土) 11:31:25.45ID:nWwnCTH/
日本最大のポータルサイトYahoo! JAPANのトップページのトップニュースがウクライナの前大統領ポロシェンコ氏の単独インタビューというご時世
■ このスレッドは過去ログ倉庫に格納されています