!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part164
https://mevius.5ch.net/test/read.cgi/tech/1683600652/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part165
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ efda-9b8G)
2023/10/31(火) 07:37:38.52ID:+ZyYyqMO0262はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-Kvqi)
2024/02/12(月) 20:07:00.91ID:4VueJhli0 Linux で * という名前のファイルを消そうとして
うわあぁぁぁとなった話はたまに聞く。
使えたとしても使うべきでない文字もある。
うわあぁぁぁとなった話はたまに聞く。
使えたとしても使うべきでない文字もある。
263デフォルトの名無しさん (ワッチョイ f7cb-nOVH)
2024/02/12(月) 21:44:07.99ID:zGvIVge80 262>>
それ以外のファイルをすべて退避した上でディレクトリごと削除したことがあったな
それ以外のファイルをすべて退避した上でディレクトリごと削除したことがあったな
264デフォルトの名無しさん (ワッチョイ f7cb-nOVH)
2024/02/12(月) 21:46:10.68ID:zGvIVge80 すみません、261ですが、Windows限定の話ではなかったですね
失礼しました…
失礼しました…
265デフォルトの名無しさん (ワッチョイ 5edc-s3Gl)
2024/02/13(火) 05:53:49.07ID:QIUviIGO0 Linuxならi-nodeをしていすれば
findと組み合わせてどんな名前のファイルも消去できるんだけどなあ
windowsはなんか複雑だったような気がした
findと組み合わせてどんな名前のファイルも消去できるんだけどなあ
windowsはなんか複雑だったような気がした
266デフォルトの名無しさん (ワッチョイ 1e27-2ki6)
2024/02/13(火) 09:36:03.89ID:7CLA20rP0 iso8901にしない人はたぶんこの規格を知らないわけで意識低すぎだろと思ってしまう
267はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-A7R9)
2024/02/13(火) 11:18:57.32ID:T85IlqBy0268デフォルトの名無しさん (ワッチョイ 5ed7-nvep)
2024/02/13(火) 12:55:27.90ID:c63MYIIQ0 >>267
エンドユーザーの文化的背景に配慮したデータフォーマットの利点は、エンドユーザーの知識やメタファーを利用した学習曲線の低勾配化であって、技術的には負の遺産になりやすいことには注意が必要。
典型的には小組織から始まるURLの並びですな。木構造との相性がひどく悪い。
あるいは大きな桁から始まるバイト列とか。あんなの1桁目から始めればエンディアン問題とか無かった。
エンドユーザーの文化的背景に配慮したデータフォーマットの利点は、エンドユーザーの知識やメタファーを利用した学習曲線の低勾配化であって、技術的には負の遺産になりやすいことには注意が必要。
典型的には小組織から始まるURLの並びですな。木構造との相性がひどく悪い。
あるいは大きな桁から始まるバイト列とか。あんなの1桁目から始めればエンディアン問題とか無かった。
269デフォルトの名無しさん (ワッチョイ 12ad-v2JO)
2024/02/13(火) 13:07:38.28ID:mTl8FNrx0 > 典型的には小組織から始まるURLの並びですな。木構造との相性がひどく悪い。
それは人間から見たときと機械から見たときの見やすさの違いでしかないような気がする
でも日本の住所は大きい方から始まるんだよな
アメリカは個人から始まる
文化の違いやけども、日本人は機械生命体だったのかもしれぬ
それは人間から見たときと機械から見たときの見やすさの違いでしかないような気がする
でも日本の住所は大きい方から始まるんだよな
アメリカは個人から始まる
文化の違いやけども、日本人は機械生命体だったのかもしれぬ
270デフォルトの名無しさん (ワッチョイ 6b74-e92p)
2024/02/15(木) 04:22:25.92ID:MOgQCM5N0 >>58
亀だがクロスで使ってるよ
亀だがクロスで使ってるよ
271デフォルトの名無しさん (ワッチョイ d62e-RfGy)
2024/02/16(金) 22:41:08.10ID:/bcZ41DF0 enable_shared_from_thisなクラスで、shared_from_this()はコンストラクタの中では
呼べないようですね
コンストラクタの中の処理でthisを渡したい処理があるのですが、どうしたら...
そもそもそれ自体が間違っているのでしょうか
コンストラクタが呼ばれる行の次でその処理を呼べばいいという説もありますが、
現在のコードがそれをやりにくい形になっていて
呼べないようですね
コンストラクタの中の処理でthisを渡したい処理があるのですが、どうしたら...
そもそもそれ自体が間違っているのでしょうか
コンストラクタが呼ばれる行の次でその処理を呼べばいいという説もありますが、
現在のコードがそれをやりにくい形になっていて
272デフォルトの名無しさん (ワッチョイ ef63-uLm/)
2024/02/17(土) 11:55:24.05ID:hsYxYbKj0 >>250
>>2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト!
>もしそのテストが必要なんだとすれば、catchしない場合はその例外が通過する
>呼び出し階層全部でテストをしなきゃならないってことになるが。
その通り。テスト不要としたいなら、例外が出た原因を調べて出ないようにするのが筋
原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい
>>251
>catchする⇒無視する、握りつぶす って脳内変換
脳内変換ではなくて、予防的に入れたtry { } catch ()部分のテストが不十分な限り事実じゃーん?
>>252
>本質的にやってること変わらないのに
別に。
return -1; は呼び出し側のバグで見落とすかもしれないが
throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル
むしろ予防的なtry { } catch () が例外のメリットをreturn -1; に縮小してゐる
>>2. fall-throughする関数が例外による処理の中断でおかしいことにならないか(←要テスト!
>もしそのテストが必要なんだとすれば、catchしない場合はその例外が通過する
>呼び出し階層全部でテストをしなきゃならないってことになるが。
その通り。テスト不要としたいなら、例外が出た原因を調べて出ないようにするのが筋
原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい
>>251
>catchする⇒無視する、握りつぶす って脳内変換
脳内変換ではなくて、予防的に入れたtry { } catch ()部分のテストが不十分な限り事実じゃーん?
>>252
>本質的にやってること変わらないのに
別に。
return -1; は呼び出し側のバグで見落とすかもしれないが
throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル
むしろ予防的なtry { } catch () が例外のメリットをreturn -1; に縮小してゐる
273デフォルトの名無しさん (ワッチョイ ef63-uLm/)
2024/02/17(土) 12:01:54.73ID:hsYxYbKj0274デフォルトの名無しさん (ワッチョイ 12ad-hHXc)
2024/02/17(土) 12:35:51.03ID:mUyTgSzm0 テストって想定した動作環境、データ入力に対して想定した動作をするか確認をするわけで
想定しえないエラーや割り込みに対してはテストのしようがないんだけどな
そのための例外処理だろ
想定しえないエラーや割り込みに対してはテストのしようがないんだけどな
そのための例外処理だろ
275デフォルトの名無しさん (ワッチョイ 6332-A7R9)
2024/02/17(土) 13:04:42.05ID:4+T7+QKn0 例外が上がってくるってことはどこかで例外を投げてるってことだぞ。
問題が起きたところでその問題に対して例外を投げるという対処をしてる箇所がある。
想定してないなら例外送出すらできないよ。
その上で人間は大きいプログラムの全体を把握することは困難だし
機械的なチェックがしづらいという現実はあるって話だ。
問題が起きたところでその問題に対して例外を投げるという対処をしてる箇所がある。
想定してないなら例外送出すらできないよ。
その上で人間は大きいプログラムの全体を把握することは困難だし
機械的なチェックがしづらいという現実はあるって話だ。
276デフォルトの名無しさん (ワッチョイ 12ad-hHXc)
2024/02/17(土) 13:33:26.89ID:mUyTgSzm0 アプリケーションを作っているのとOSを作っている人は別
それと同様に利用するライブラリがどのような例外を投げてくるか、もしくはそのライブラリがさらに下位のライブラリから投げられた例外をどう処理しているか
アプリケーション開発者はそれらすべて想定できているとでも?
ハードウェアやシステム含めて全部ひとりで作り上げる(もしくは密に情報共有できている)ならお前の言う通りだけどな
それと同様に利用するライブラリがどのような例外を投げてくるか、もしくはそのライブラリがさらに下位のライブラリから投げられた例外をどう処理しているか
アプリケーション開発者はそれらすべて想定できているとでも?
ハードウェアやシステム含めて全部ひとりで作り上げる(もしくは密に情報共有できている)ならお前の言う通りだけどな
277デフォルトの名無しさん (ワッチョイ 6332-A7R9)
2024/02/17(土) 13:41:06.46ID:4+T7+QKn0278デフォルトの名無しさん (ワッチョイ 12ad-hHXc)
2024/02/17(土) 13:56:12.85ID:mUyTgSzm0 俺も、(もしくは密に情報共有できている)なら、と言う話をしているがな
ただ「現実の話」と言うならば、伝わっていないことをコミュニケーションの問題、自動化の問題と言うのはナンセンスだわな
お前自身がこう言っている
> その上で人間は大きいプログラムの全体を把握することは困難だし
> 機械的なチェックがしづらいという現実はあるって話だ。
ではWindowsと言う巨大プログラムにおいてMSの中の人はどの程度全体を把握していて、発生しうる例外を公開しているのか
アプリケーション開発者はその公開情報をもとに *想定し* プログラムを組まなくてはならない
さてアプリケーション開発者はOSなど下位のモジュールから飛んでくる例外をすべて想定できるのか?
そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
(ここで言う継続的な処理とは問題なしとして先に進むだけでなく、異常があったとして正常な(処理の)出発点に戻るという意味でもある)
起こりえる例外をすべて想定せずともプログラムを安全に継続するための仕組みが例外処理だろ
ただ「現実の話」と言うならば、伝わっていないことをコミュニケーションの問題、自動化の問題と言うのはナンセンスだわな
お前自身がこう言っている
> その上で人間は大きいプログラムの全体を把握することは困難だし
> 機械的なチェックがしづらいという現実はあるって話だ。
ではWindowsと言う巨大プログラムにおいてMSの中の人はどの程度全体を把握していて、発生しうる例外を公開しているのか
アプリケーション開発者はその公開情報をもとに *想定し* プログラムを組まなくてはならない
さてアプリケーション開発者はOSなど下位のモジュールから飛んでくる例外をすべて想定できるのか?
そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
(ここで言う継続的な処理とは問題なしとして先に進むだけでなく、異常があったとして正常な(処理の)出発点に戻るという意味でもある)
起こりえる例外をすべて想定せずともプログラムを安全に継続するための仕組みが例外処理だろ
279デフォルトの名無しさん (ワッチョイ 6332-A7R9)
2024/02/17(土) 15:09:15.47ID:4+T7+QKn0 C++ の設計理念としては「そうは言っても現実はこうなっとるやろが!」という
状況に対処する方法があることも大事にしてはいる。 たとえ綺麗な方法ではなくても。
どのような問題が起こりうるのか (それなりには) きちんと想定するのは当然の大前提で、
それでもこれからリリースするソフトウェアに何が起こるかわからんのは仕方がないという話であって、
想定が不十分でも構わないという話でもない。
よくは無いが悪いときでもなんとかなるという程度の仕組みだよ。
状況に対処する方法があることも大事にしてはいる。 たとえ綺麗な方法ではなくても。
どのような問題が起こりうるのか (それなりには) きちんと想定するのは当然の大前提で、
それでもこれからリリースするソフトウェアに何が起こるかわからんのは仕方がないという話であって、
想定が不十分でも構わないという話でもない。
よくは無いが悪いときでもなんとかなるという程度の仕組みだよ。
280デフォルトの名無しさん (ワッチョイ e33b-hZ+C)
2024/02/17(土) 15:39:40.77ID:snTd9S980 >>271
一番いいのはコンストラクタの中でthisを渡す部分を何とかすることだけど、それが必ずしも間違ってるかは分からないので
コンストラクタの中だけでその処理が呼ばれるなら生のthisを渡すことを許容しつつ、その処理の呼び出し可能範囲を限定するか
そのクラスの構築をファクトリ関数経由に限定して、ファクトリ関数の中に構築とその処理呼び出しをまとめてしまうとか
一番いいのはコンストラクタの中でthisを渡す部分を何とかすることだけど、それが必ずしも間違ってるかは分からないので
コンストラクタの中だけでその処理が呼ばれるなら生のthisを渡すことを許容しつつ、その処理の呼び出し可能範囲を限定するか
そのクラスの構築をファクトリ関数経由に限定して、ファクトリ関数の中に構築とその処理呼び出しをまとめてしまうとか
281デフォルトの名無しさん (ワッチョイ 12ad-hHXc)
2024/02/17(土) 15:49:12.98ID:mUyTgSzm0 > 想定が不十分でも構わないという話でもない。
誰もそれで構わないとは言っていないので
それでも起きてしまうエラーや割り込みに対応するための仕組みが例外処理だろ
身も蓋もない言い方をするなら
そもそも想定できているなら事前に排除するだけで済むわけで例外処理の必要もない
(もちろん分かっていても事前に排除せず意図的に例外処理に丸投げすることもあるのは知っている)
アプリケーション開発者にとってもっとも想定できない問題ってのは実行環境に起因するもの
誰もそれで構わないとは言っていないので
それでも起きてしまうエラーや割り込みに対応するための仕組みが例外処理だろ
身も蓋もない言い方をするなら
そもそも想定できているなら事前に排除するだけで済むわけで例外処理の必要もない
(もちろん分かっていても事前に排除せず意図的に例外処理に丸投げすることもあるのは知っている)
アプリケーション開発者にとってもっとも想定できない問題ってのは実行環境に起因するもの
282デフォルトの名無しさん (ワッチョイ 16cf-BOeC)
2024/02/17(土) 20:37:07.00ID:QSMcEn770 >>272
>原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい
相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ。
>return -1; は呼び出し側のバグで見落とすかもしれないが
>throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル
戻り値のチェック漏れは静的局所的にチェックできるが例外は出てみなけりゃ結局澪とされるわけだが。
リリース後にユーザーサイドでその見落とされていた例外が発生してプログラムが落ちたりしたらそれはただのバグ。
>原因を調査して対策せずに予防的にテスト不十分のtry { } catch () をてんこ盛りにする方がソフトウェアー品質が上がるという考えのはおかしい
相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ。
>return -1; は呼び出し側のバグで見落とすかもしれないが
>throw std::logic_error("*** ERR ***"); なら悪評千里を走ってバグの兆候が嫌でもワカル
戻り値のチェック漏れは静的局所的にチェックできるが例外は出てみなけりゃ結局澪とされるわけだが。
リリース後にユーザーサイドでその見落とされていた例外が発生してプログラムが落ちたりしたらそれはただのバグ。
283デフォルトの名無しさん (ワッチョイ 1e85-XyAm)
2024/02/17(土) 23:18:00.46ID:v62CV0mD0 >>278
> そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
> どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
それは幻想
c++の例外安全の達成がどれだけ難しいか理解していないね
簡単にリークするし、オブジェクトが想定外の状態を持ったりする
動作保証ができない
だから仕様に明示されていない例外が来たら基本は終了だよ
そのまま継続してそれが原因でその後別の場所で落ちられたら無駄な調査の手間が増えるだけ
> そもそも致命的な例外でアプリケーション自身の継続が困難な場合を除いて
> どんな例外でもあっても継続的な処理を可能にするのが例外処理だろうに
それは幻想
c++の例外安全の達成がどれだけ難しいか理解していないね
簡単にリークするし、オブジェクトが想定外の状態を持ったりする
動作保証ができない
だから仕様に明示されていない例外が来たら基本は終了だよ
そのまま継続してそれが原因でその後別の場所で落ちられたら無駄な調査の手間が増えるだけ
284デフォルトの名無しさん (ワッチョイ 16cf-BOeC)
2024/02/17(土) 23:48:07.59ID:QSMcEn770 例外安全と例外の種類には特に関係はないわけで、知らない例外だと例外安全の保証が困難になるなんてこともない。
285デフォルトの名無しさん (ワッチョイ 6fbc-ERL4)
2024/02/18(日) 00:24:49.13ID:JX7gxI3D0286デフォルトの名無しさん (ワッチョイ ffe0-UH2C)
2024/02/18(日) 09:00:09.02ID:c1Urupub0287デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 09:39:44.00ID:9f8IS57r0 ぶっちゃけ>>283がなに言ってるのかわからない
継続してそれが原因で?
いやいやw
突如落ちるより、保存できるデータは保存してもらう機会を与えることは出来るだろ
なんでお前は何事もなかったかのように作業を続ける前提でしか話を聞かないんだ?
オブジェクトの状態が変わっているかも?
変更前のデータと比較して変わっていたらユーザに確認すればいいだろ
例えば図形情報のうちTopの読み込みで例外が発生した場合に想定してないからとアプリ落として全情報ロストさせる気か?
Topは0で初期化させ読み込めなかったことをユーザに伝えて修正、もしくは再読み込みの機会を与えるだけの話だろ
継続してそれが原因で?
いやいやw
突如落ちるより、保存できるデータは保存してもらう機会を与えることは出来るだろ
なんでお前は何事もなかったかのように作業を続ける前提でしか話を聞かないんだ?
オブジェクトの状態が変わっているかも?
変更前のデータと比較して変わっていたらユーザに確認すればいいだろ
例えば図形情報のうちTopの読み込みで例外が発生した場合に想定してないからとアプリ落として全情報ロストさせる気か?
Topは0で初期化させ読み込めなかったことをユーザに伝えて修正、もしくは再読み込みの機会を与えるだけの話だろ
288デフォルトの名無しさん (ワッチョイ cfcf-sYtR)
2024/02/18(日) 09:41:50.12ID:WHoJTRhT0289デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 12:27:32.99ID:9f8IS57r0 > これはどういう意味なんだろうな。
そうそれ
tryブロックで囲った部分(つまり任意)の例外発生に対応するのが例外処理なのになにが出来ないというのか
想定している例外が発生して継続できると判断したなら続ければいいし
ダメならユーザに通知してもちょも安全な方法を選択させればいい
でもってそれは想定していない例外の発生でも同じ
ただ致命的でどうしようもないなら強制終了させるだけの話で、想定していない例外はなんでもかんでも強制終了じゃ例外処理使う意味が薄まってしまう
そうそれ
tryブロックで囲った部分(つまり任意)の例外発生に対応するのが例外処理なのになにが出来ないというのか
想定している例外が発生して継続できると判断したなら続ければいいし
ダメならユーザに通知してもちょも安全な方法を選択させればいい
でもってそれは想定していない例外の発生でも同じ
ただ致命的でどうしようもないなら強制終了させるだけの話で、想定していない例外はなんでもかんでも強制終了じゃ例外処理使う意味が薄まってしまう
290デフォルトの名無しさん (ワッチョイ e3f9-NGC7)
2024/02/18(日) 12:28:39.34ID:9f8IS57r0 もちょも は もっとも の まちがい
291デフォルトの名無しさん (ワッチョイ 6f5b-ERL4)
2024/02/18(日) 13:22:22.19ID:JX7gxI3D0 >>287
ファイル保存するなとか言ってない
それぐらい終了処理のひとつだろ
ログファイルもシグナルトラップして必ずフラッシュさせるのが常套手段だろ
意味不明な例外が発生しました
データが破損してないかあなたが確認してください
動作無保証ですが処理継続しますか?yes/no
こんなUIだすやつセンスの欠片もない
ファイル保存するなとか言ってない
それぐらい終了処理のひとつだろ
ログファイルもシグナルトラップして必ずフラッシュさせるのが常套手段だろ
意味不明な例外が発生しました
データが破損してないかあなたが確認してください
動作無保証ですが処理継続しますか?yes/no
こんなUIだすやつセンスの欠片もない
292デフォルトの名無しさん (ワッチョイ e304-hmqi)
2024/02/18(日) 14:01:41.78ID:6Yt/CDIt0 私が20代の頃に見かけた論争が今も繰り返されてるのかわいい🩷
293デフォルトの名無しさん (ワッチョイ ffad-mJpf)
2024/02/18(日) 15:55:07.22ID:1iQutSwY0294デフォルトの名無しさん (ワッチョイ cfcf-sYtR)
2024/02/18(日) 16:26:47.97ID:WHoJTRhT0 >>291
まさか、何も言わずにいきなり落とす方が良いとか言うわけじゃあるまい。
まさか、何も言わずにいきなり落とす方が良いとか言うわけじゃあるまい。
295デフォルトの名無しさん (スッップ Sd1f-p9fr)
2024/02/18(日) 17:54:38.27ID:L2mk1x1ad >>289
もちょカワイイよね
もちょカワイイよね
296デフォルトの名無しさん (ワッチョイ bf9a-/DPD)
2024/02/18(日) 18:17:37.55ID:LeQ06zof0 >>280
実生活のあれと似てますよね。「引っ越すことになりました。新住所はXXです」と早めに
連絡したら、気の早い知人がそこに押しかけてきて「なんやまだ引越しとらんやんけ」となる
やはり引越し作業完了を待ってからの方がいいのか。ってちがうか
実生活のあれと似てますよね。「引っ越すことになりました。新住所はXXです」と早めに
連絡したら、気の早い知人がそこに押しかけてきて「なんやまだ引越しとらんやんけ」となる
やはり引越し作業完了を待ってからの方がいいのか。ってちがうか
297デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:41:07.84ID:C77pR/Zl0 >>282
>相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ
>249に賛同いただけていないということは、発生してもいない例外について予防的にtry { } catch () を入れようとしていることは
確定的に明らか
で、例外というブツは「例外なく」悪い知らせなので(∵仮に良い知らせを例外で寄越すライブラリがあったらそれ自体悪い知らせである
普通の人は悪い知らせが来る前に処置しようとする。すわなち例外が来ないように(可能な限り)修正する。
try { } catch ( ) でひっかけて原因調査兼確実な修正でざい、それが一番効率が良い方法論である、などと主張するのはおかしい人だけ……
>相変わらずずれてるな。 catch する == 原因を調査しない じゃないわけ
>249に賛同いただけていないということは、発生してもいない例外について予防的にtry { } catch () を入れようとしていることは
確定的に明らか
で、例外というブツは「例外なく」悪い知らせなので(∵仮に良い知らせを例外で寄越すライブラリがあったらそれ自体悪い知らせである
普通の人は悪い知らせが来る前に処置しようとする。すわなち例外が来ないように(可能な限り)修正する。
try { } catch ( ) でひっかけて原因調査兼確実な修正でざい、それが一番効率が良い方法論である、などと主張するのはおかしい人だけ……
298デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:49:37.41ID:C77pR/Zl0 >>284
例外安全というもののスコープに対して考察が足りていない
1.
例外安全なオブジェクト foo のデストラクトが他の例外によって引き起こされるケースでは
foo の安全な終了は(メモリかファイルステムか何かが物理的にぶち壊れてOSがパニックになったとかでない限り
ほぼほぼ保たれるから>>284のような言い方はできるっていやーできるが、
システム全体については>>283の通りであって全然安全ではない
2.
fooの中の例外処理が本当に完璧かはfooのコードに書かれている全てのtry { } catch () について
全ての例外発生条件についてテストか厳格めのコードレビューでも行わないことには安全性が担保されない。
(つまり例外安全にした実装したと主張するだけでは話がただちには簡単にはならない
例外安全というもののスコープに対して考察が足りていない
1.
例外安全なオブジェクト foo のデストラクトが他の例外によって引き起こされるケースでは
foo の安全な終了は(メモリかファイルステムか何かが物理的にぶち壊れてOSがパニックになったとかでない限り
ほぼほぼ保たれるから>>284のような言い方はできるっていやーできるが、
システム全体については>>283の通りであって全然安全ではない
2.
fooの中の例外処理が本当に完璧かはfooのコードに書かれている全てのtry { } catch () について
全ての例外発生条件についてテストか厳格めのコードレビューでも行わないことには安全性が担保されない。
(つまり例外安全にした実装したと主張するだけでは話がただちには簡単にはならない
299デフォルトの名無しさん (ワッチョイ 1b63-9XlH)
2024/03/02(土) 23:57:46.67ID:C77pR/Zl0 それはそうとして、予防的なtry{ } catch () の何が一番駄目かというと、設計上のトレードオフをわけわかんなくすることが確実な点
例外発生後の状況というのはたいてい>>283の通りのわけなので、何かを捨てて何かを取る
(例えばシステムは最悪落ちても構わないが、例外安全なオブジェクトfooでリソースAの整合性は死守する等)
のトレードオフが発生するがそういうのこそ慎重な設計と考慮が必要な事項であることは確定的にあきらか
プログラムの全階層にtry { } catch ()入れたら完璧などというアフォはやっぱtry { } catch () しないのが正しい
例外発生後の状況というのはたいてい>>283の通りのわけなので、何かを捨てて何かを取る
(例えばシステムは最悪落ちても構わないが、例外安全なオブジェクトfooでリソースAの整合性は死守する等)
のトレードオフが発生するがそういうのこそ慎重な設計と考慮が必要な事項であることは確定的にあきらか
プログラムの全階層にtry { } catch ()入れたら完璧などというアフォはやっぱtry { } catch () しないのが正しい
300デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/03(日) 21:57:15.41ID:735dldsp0 >>298
自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかをごっちゃにしてるだろ。
しかも、呼び出す関数からドキュメント化されていない想定外の例外が発生するなら例外安全に作られていないだろうという
変な決めつけが混じってる。
例外安全なコードは例外の種類に依存しない。知ってる冷害に対しては安全だけど知らない例外が飛んできたら安全じゃない
なんてのはそもそも例外安全とは言わない。
自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかをごっちゃにしてるだろ。
しかも、呼び出す関数からドキュメント化されていない想定外の例外が発生するなら例外安全に作られていないだろうという
変な決めつけが混じってる。
例外安全なコードは例外の種類に依存しない。知ってる冷害に対しては安全だけど知らない例外が飛んできたら安全じゃない
なんてのはそもそも例外安全とは言わない。
301デフォルトの名無しさん (ワッチョイ ef0a-qSkN)
2024/03/03(日) 22:08:48.84ID:qMaLplcd0302デフォルトの名無しさん (ワッチョイ 3b7c-85wQ)
2024/03/03(日) 22:31:19.01ID:GdJ/jhkt0 >>301
自分でnoexcept指定した関数のことなら投げないことを確認するテストくらい書けよ当たり前だろ
自分でnoexcept指定した関数のことなら投げないことを確認するテストくらい書けよ当たり前だろ
303デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/04(月) 00:08:35.31ID:gWJ01aQ50 >お前さ、すべてのnoexcept関数呼び出しの例外テスト書いてんのか?
悪魔の証明をテストすんのか
悪魔の証明をテストすんのか
304デフォルトの名無しさん (ワッチョイ ef0a-qSkN)
2024/03/04(月) 07:57:02.63ID:D3yk9beu0305デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 07:58:21.27ID:KYG2Ugpe0 なんか予想外に低レなレスポンスを寄越した>>299……
さすがに>>283の後に>>284のような楽天的なことを言えるだけのことはあるということか……
例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
が、例外安全なオブジェクトだけかをもれなく機械的に確認する方法は無い上に、
中断したら別物になる(処理の順序が命)というアルゴリズムというものの本質的特性により、
>>183 のような try { } catch () が必要なケースは隙あらば混ざり込んでくるから(※1)
>>284が空想するようなシステム全体の例外安全化などは現実には不可能。
せいぜいある程度の規模のオブジェクトであれば、十分テストすれば
(自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかを慎重に確認せねばならない)
ほぼほぼの信頼度で実現できるというぐらい。
さすがに>>283の後に>>284のような楽天的なことを言えるだけのことはあるということか……
例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
が、例外安全なオブジェクトだけかをもれなく機械的に確認する方法は無い上に、
中断したら別物になる(処理の順序が命)というアルゴリズムというものの本質的特性により、
>>183 のような try { } catch () が必要なケースは隙あらば混ざり込んでくるから(※1)
>>284が空想するようなシステム全体の例外安全化などは現実には不可能。
せいぜいある程度の規模のオブジェクトであれば、十分テストすれば
(自分が呼び出す関数が例外安全にできているかどうかと自分の処理が例外安全かどうかを慎重に確認せねばならない)
ほぼほぼの信頼度で実現できるというぐらい。
306デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 07:59:55.02ID:KYG2Ugpe0 (※1) >>183 の関数そのものは、例外安全なスレッドオブジェクトでも使ったらtry { } catch () 無しの例外安全な関数うに書き直すことはできうる
307デフォルトの名無しさん (ワッチョイ 8b63-eOBD)
2024/03/04(月) 08:09:49.95ID:KYG2Ugpe0 あと寝てて思ったがプロセスが死んでもサービスが継続したらお客様には迷惑を掛けずに済むので
(直接そういうのをやってちるわけではないので強くは言わんが
ウォッチドッグタイマー的な死活監視で異常あらばプロセス再起動とかマシンを切り替えるとか方法はいくつもあって、
十分テストされたプログラムならクラッシュ頻度をポアソン分布とみなして信頼度も出せる
やっぱ「お客様の前で落ちたら恥ずかしいから」というつまらないプライドを基本的動機とする
try {
....
} catch (std::exception& e) {
log_e("std::exceptionがスローされました");
};
みたいなコードをリリースコードに含めましょうという>>282の調査のスタンスは全く正当化されない
100日に一回しか再現しないバグの修正を3日でやれと言われて手元にあるのがメモリダンプの代わりに上の23文字のログメッセージだけだったりしたら
>>282は自○が真剣に考慮すべき選択肢に……
(直接そういうのをやってちるわけではないので強くは言わんが
ウォッチドッグタイマー的な死活監視で異常あらばプロセス再起動とかマシンを切り替えるとか方法はいくつもあって、
十分テストされたプログラムならクラッシュ頻度をポアソン分布とみなして信頼度も出せる
やっぱ「お客様の前で落ちたら恥ずかしいから」というつまらないプライドを基本的動機とする
try {
....
} catch (std::exception& e) {
log_e("std::exceptionがスローされました");
};
みたいなコードをリリースコードに含めましょうという>>282の調査のスタンスは全く正当化されない
100日に一回しか再現しないバグの修正を3日でやれと言われて手元にあるのがメモリダンプの代わりに上の23文字のログメッセージだけだったりしたら
>>282は自○が真剣に考慮すべき選択肢に……
308デフォルトの名無しさん (ワッチョイ 9fad-ZLJX)
2024/03/04(月) 08:50:22.67ID:MzjtGtOW0309デフォルトの名無しさん (ワッチョイ 0fcf-0WZ8)
2024/03/04(月) 08:53:34.53ID:gWJ01aQ50 >例外安全は確かに目指すべき境地であり、例外安全なオブジェクトだけでコードを書けば
>その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
例外安全だからといってcatchが不要になるわけないだろ。
根本的なところで勘違いしてるから頓珍漢が主張を続けてるわけだな。
>その関数は例外安全となる。try { } catch ()など一切不要、となるわけで一見実現が簡単に思える
例外安全だからといってcatchが不要になるわけないだろ。
根本的なところで勘違いしてるから頓珍漢が主張を続けてるわけだな。
310デフォルトの名無しさん (ワッチョイ abe4-XE6S)
2024/03/04(月) 10:20:12.57ID:QvxlWFfk0 例外安全には基本保証・強い保証・no-fail保証がある
例外がスローされない関数を作ればno-fail保証がある
基本保証や強い保証は例外発生後も不整合が発生しないもの
たとえば例外が発生した関数をもう一度呼び出すと「すでに実行中です」とエラーを返すようなものは例外安全ではない(おそらく実行中フラグ変数が立ったままになっている)
例外がスローされない関数を作ればno-fail保証がある
基本保証や強い保証は例外発生後も不整合が発生しないもの
たとえば例外が発生した関数をもう一度呼び出すと「すでに実行中です」とエラーを返すようなものは例外安全ではない(おそらく実行中フラグ変数が立ったままになっている)
311デフォルトの名無しさん (ワッチョイ abe4-XE6S)
2024/03/04(月) 10:23:14.03ID:QvxlWFfk0 10行のデータをファイルに出力するとき、例外が発生して5行だけデータが出力されてしまうのは強い保証があるとはいえない
例外が発生した際にデータを書き込む前のファイル状態に戻れば強い保証がある(例外安全である)といえる
例外が発生した際にデータを書き込む前のファイル状態に戻れば強い保証がある(例外安全である)といえる
312はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b32-hL5K)
2024/03/04(月) 12:10:26.04ID:ASLjljy+0 誤解のないように念のため補足。
この場合の「強い」という用語は性質の分類であって強いことがより良いというわけではないという話をしてる。(んだよね?)
例外を出さずに済むならそれに越したことはないよ。
でも、ひとつの部品の中では問題を解決できないことがあるからこそ例外を用いて他の部品と連携しての解決を試みるわけ。
連携するには保証の強力さよりも保証範囲の明瞭さ (明瞭でもカバーしようがない設計はあかんが) が大事で、プログラム全体で整合性が保たれていれば例外安全と言える。
仕様が不明瞭なライブラリもあるのが現実だってのはそりゃそうだけど、出来が悪い部品とつじつま合わせをしきらないってのは例外のせいでも C++ のせいでもない。
この場合の「強い」という用語は性質の分類であって強いことがより良いというわけではないという話をしてる。(んだよね?)
例外を出さずに済むならそれに越したことはないよ。
でも、ひとつの部品の中では問題を解決できないことがあるからこそ例外を用いて他の部品と連携しての解決を試みるわけ。
連携するには保証の強力さよりも保証範囲の明瞭さ (明瞭でもカバーしようがない設計はあかんが) が大事で、プログラム全体で整合性が保たれていれば例外安全と言える。
仕様が不明瞭なライブラリもあるのが現実だってのはそりゃそうだけど、出来が悪い部品とつじつま合わせをしきらないってのは例外のせいでも C++ のせいでもない。
313デフォルトの名無しさん (ワッチョイ f7f0-B2uz)
2024/04/08(月) 15:38:53.52ID:IvxniXPw0 std::initializer_listについて質問です
下の例ですがコンストラクタの引数に配列リテラルを指定した場合、リストがコピーされてしまいますよね?
これは無駄なので回避したいのですが良い方法はありますか?
https://cpprefjp.github.io/reference/initializer_list/initializer_list.html
下の例ですがコンストラクタの引数に配列リテラルを指定した場合、リストがコピーされてしまいますよね?
これは無駄なので回避したいのですが良い方法はありますか?
https://cpprefjp.github.io/reference/initializer_list/initializer_list.html
314デフォルトの名無しさん (ワッチョイ df01-g9Lk)
2024/04/09(火) 12:13:11.96ID:gepNgOiE0 どこのコピー?
315デフォルトの名無しさん (ブーイモ MM3e-Nnmc)
2024/04/09(火) 12:52:21.68ID:80QuF/MqM リテラルのコピーを気にするならconstexprじゃねーの?
ほんとにコンパイル時に定数になるかは知らんけど
ほんとにコンパイル時に定数になるかは知らんけど
316デフォルトの名無しさん (ワッチョイ 7b32-B3tP)
2024/04/09(火) 15:22:07.81ID:hsAXyuRl0 >>313
C++ に配列リテラルはない。
その書き方で出てくる波括弧はリスト初期化の構文の一部で、
波括弧の部分単体は配列リテラルではない。
実行時にオブジェクトの構築を避けるならコンパイル時に構築することになるが
それはそれで色々と制約があるんでほんまにそれが必要なんか?
というのはよく考えないといけない。
あえてやるならこんな感じかな……。
https://wandbox.org/permlink/HStrLq8ddyC3tby2
C++ に配列リテラルはない。
その書き方で出てくる波括弧はリスト初期化の構文の一部で、
波括弧の部分単体は配列リテラルではない。
実行時にオブジェクトの構築を避けるならコンパイル時に構築することになるが
それはそれで色々と制約があるんでほんまにそれが必要なんか?
というのはよく考えないといけない。
あえてやるならこんな感じかな……。
https://wandbox.org/permlink/HStrLq8ddyC3tby2
317デフォルトの名無しさん (ワッチョイ c3c9-hAMa)
2024/04/09(火) 20:10:25.18ID:T/amOWJO0 とあるtemplateの関数を実装しているのですが、
const指定の振る舞いがよくわからなくなったので
質問させてください。
以下の(だいぶ簡略化した)コードで、
f_without_const<const int*>(const int* a)
はコンパイルが通るのですが
f_with_const<int*>(const int* a)
がコンパイルが通らないのは何故でしょうか。
https://wandbox.org/permlink/OIgKM2DTqvpGduRV
const指定の振る舞いがよくわからなくなったので
質問させてください。
以下の(だいぶ簡略化した)コードで、
f_without_const<const int*>(const int* a)
はコンパイルが通るのですが
f_with_const<int*>(const int* a)
がコンパイルが通らないのは何故でしょうか。
https://wandbox.org/permlink/OIgKM2DTqvpGduRV
318デフォルトの名無しさん (ワッチョイ f7f0-B2uz)
2024/04/09(火) 20:30:45.76ID:lDhzon+/0319デフォルトの名無しさん (ワッチョイ 2790-Bmwq)
2024/04/09(火) 21:45:08.71ID:+RmfoJzl0 >>317
templateは型が違うと全くの別物として処理するからだと思う
templateは型が違うと全くの別物として処理するからだと思う
320デフォルトの名無しさん (ワッチョイ 7b10-qE2a)
2024/04/09(火) 22:00:45.26ID:5hAg3cgl0321はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b32-B3tP)
2024/04/10(水) 08:39:45.44ID:Fk7YBwaR0 const T t に対して const int* a が来たら
字句の順序としては T に int* が対応してるように見えちゃうもんな……。
字句の順序としては T に int* が対応してるように見えちゃうもんな……。
322デフォルトの名無しさん (ワッチョイ c37a-hAMa)
2024/04/11(木) 21:42:31.84ID:0cjrPM+u0 317です、返信遅くなってすみません
確かに言われてみればconstが修飾してるのはint*なので、意味的にint *constが正しいですね…
ありがとうございました
確かに言われてみればconstが修飾してるのはint*なので、意味的にint *constが正しいですね…
ありがとうございました
323デフォルトの名無しさん (ワッチョイ b77c-0iQt)
2024/04/14(日) 14:49:11.63ID:tTNkn9kB0 先月東京で標準化委員会の会議あったらしいけどなんか情報ないの?
324デフォルトの名無しさん (ワッチョイ ff33-m4LK)
2024/04/14(日) 15:03:51.38ID:H7y3imqp0325デフォルトの名無しさん (ワッチョイ 7f52-9wFU)
2024/04/16(火) 00:50:18.09ID:38VQ+8UT0326デフォルトの名無しさん (ワッチョイ 67b1-Jq5A)
2024/05/01(水) 21:36:46.68ID:/DCu7vsT0 python みたいに何でも格納できる辞書型ってC++には無いよね?
327はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8732-nVjz)
2024/05/01(水) 22:29:05.62ID:IV4TsWNk0 >>326
要素を std::any にすればだいたいどんな型の値でも入れられる。
いろんな型を入れたところで使うときには元の型として取り出さないといけないから
処理は煩雑になってあまり良いことはないけど。
要素を std::any にすればだいたいどんな型の値でも入れられる。
いろんな型を入れたところで使うときには元の型として取り出さないといけないから
処理は煩雑になってあまり良いことはないけど。
328デフォルトの名無しさん (ワッチョイ 8f7c-Y/5H)
2024/05/09(木) 20:23:09.67ID:MzADiHDk0329デフォルトの名無しさん (ワッチョイ bed6-w0ma)
2024/05/09(木) 21:19:14.71ID:M6C6+6vz0 何いってんだ
330デフォルトの名無しさん (ワッチョイ bbda-JG92)
2024/05/10(金) 11:53:06.45ID:P+BretyD0 #elifは大昔からあるぞ
331デフォルトの名無しさん (ワッチョイ 8f7c-Y/5H)
2024/05/11(土) 09:12:25.64ID:YR9R4Y390 cpprefjpが間違ってるだけ?
それともずっと規格から欠落してたけど誰も気付いてなかったパターン?
それともずっと規格から欠落してたけど誰も気付いてなかったパターン?
332デフォルトの名無しさん (ワッチョイ bed6-w0ma)
2024/05/11(土) 11:19:25.57ID:PrWZroBw0 規格が読めないならC++やめろ
333デフォルトの名無しさん (ワッチョイ 0b63-IWIS)
2024/05/11(土) 19:02:18.20ID:RotYKdRC0 elifを逆から読んだらfile
ラリーはこれを嫌ってPerlではelsifにした(適当
ラリーはこれを嫌ってPerlではelsifにした(適当
334デフォルトの名無しさん (ワッチョイ bbda-JG92)
2024/05/11(土) 22:20:47.67ID:HBPowvO20 シェルが変だからな
case ~ esac
if ~ fi
case ~ esac
if ~ fi
質問なのですが
Q1. std::fstreamでファイルを開くときのフラグの指定の仕方は次のどれが正義?
std::fstream ofs("foo.txt", std::ios::out | std::ios::binary); // (1)
std::fstream ofs("foo.txt", std::basic_ios::out | std::basic_ios::binary); // (2)
std::fstream ofs("foo.txt", std::fstream::out | std::fstream::binary); // (3)
Q1. std::fstreamでファイルを開くときのフラグの指定の仕方は次のどれが正義?
std::fstream ofs("foo.txt", std::ios::out | std::ios::binary); // (1)
std::fstream ofs("foo.txt", std::basic_ios::out | std::basic_ios::binary); // (2)
std::fstream ofs("foo.txt", std::fstream::out | std::fstream::binary); // (3)
337デフォルトの名無しさん (ブーイモ MMde-FHn0)
2024/06/06(木) 15:53:22.90ID:Vp529NVwM フル手書き前提がくそださい
338デフォルトの名無しさん (ワッチョイ fe2c-7W3t)
2024/06/06(木) 19:13:19.37ID:FMMlTunO0 fstreamなんだったらfstreamのメンバで書くのがいいんじゃない
(1)は#include <ios>が要るし、
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
340デフォルトの名無しさん (ワッチョイ d68d-vvKF)
2024/06/06(木) 23:54:13.70ID:7ZzCG2hU0 iostreamはまあしゃーない…
341デフォルトの名無しさん (ワッチョイ a97c-3xqL)
2024/06/07(金) 02:20:24.96ID:GhXFHGen0 C++の悪評の4割くらいはiostreamのせいだからな
342デフォルトの名無しさん (ワッチョイ a944-l7CW)
2024/06/07(金) 04:24:11.05ID:qf+nnTv50 ここでCmakeとNinjaについて聞くのダメ?
どーも関係がよくわからなくて?
どーも関係がよくわからなくて?
343はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:26:04.94ID:zM43Xr/H0 >>342
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
344はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:36:24.41ID:zM43Xr/H0345デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/07(金) 13:37:29.47ID:kav19u0f0 copilotで補完でok
346デフォルトの名無しさん (ワッチョイ 6af0-AYul)
2024/06/07(金) 17:07:58.06ID:NFmVQMC40 バカの解決策
347デフォルトの名無しさん (ブーイモ MMea-FHn0)
2024/06/07(金) 21:12:45.28ID:70o6R+hDM また時代に取り残されるじじい
348デフォルトの名無しさん (ワッチョイ 1563-WQ8n)
2024/06/07(金) 21:48:19.45ID:ORLoeNdF0349デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/08(土) 01:03:51.86ID:k3Jnk/Aj0 静的解析で文句言われる可能性あるからやめときな
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
350デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 04:26:59.39ID:RJYm8+UN0 lldb v14.0.0 で正しくプロセスを実行できません
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
351デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 05:11:57.08ID:RJYm8+UN0 今やってみたのですが
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
352はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 15:07:14.43ID:bthWHIYm0 WSL1 は (ある程度) Linux 互換のシステムコールを windows 内に実装することで実現していて Linux カーネルそのものではないので色々と不足がある。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
353デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 20:56:05.63ID:RJYm8+UN0354デフォルトの名無しさん (ワッチョイ 6363-vt9G)
2024/06/09(日) 21:14:14.41ID:VES2dE5O0 WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
ターゲット機を別にするとかWSL2にするとかじゃね?
ターゲット機を別にするとかWSL2にするとかじゃね?
355デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 21:36:35.88ID:RJYm8+UN0 >>354
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
356はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 22:04:05.34ID:bthWHIYm0 ざっとググってみた感じたと wsl1 では procfs が提供する情報が少ないのが lldb が動かない直接の原因みたいな数年前の情報は見つかる。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
357デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 22:18:48.29ID:RJYm8+UN0 んー
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
358デフォルトの名無しさん (ブーイモ MM1f-vt9G)
2024/06/10(月) 18:15:47.68ID:bkv2YMA2M359350 (ワッチョイ f344-7AaF)
2024/06/10(月) 21:38:00.71ID:gvR5xwnw0 自己レスです
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
360350 (ワッチョイ f344-7AaF)
2024/06/11(火) 06:20:17.73ID:Ip4/j3Hv0 ☓ openAPI
◯ oneAPI
◯ oneAPI
361あぼーん
NGNGあぼーん
362あぼーん
NGNGあぼーん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 🏡
- スーパーが開くまで約4時間何すりゃいいんだ?
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 飲みの約束だるい
- 減税は低所得者差別
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
