- 1 名前:デフォルトの名無しさん (ワッチョイ efda-9b8G) mailto:sage [2023/10/31(火) 07:37:38.52 ID:+ZyYyqMO0.net]
- !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
- 500 名前:デフォルトの名無しさん [2024/10/01(火) 15:19:57.32 ID:KXGxeTHwM.net]
- >>498
>押し込めた中に問題があればそりゃ当然駄目だよ。 当然分かっているだろうが、unsafeの中だけでなく、 それが外側に及ぼす影響にも問題が生じないように作らなければなら ないが、それにはunsafeとRustの両方に対する深い理解が 必要となるだろうな。
- 501 名前:デフォルトの名無しさん mailto:sage [2024/10/01(火) 18:36:21.46 ID:al1nAqGBM.net]
- >>500
unsafeの中を通過する時には問題ないが、 戻り値などや、連携する他のメソッドなどが 関係した結果、どこかで分かりにくいメモリーエラー になるようなことも避ける必要が有るが、 それにはかなりRustの内部構造(?)に対する深い知識 と理解が必要となりそうだ。
- 502 名前:デフォルトの名無しさん (ワッチョイ 1fb1-/QnX) mailto:sage [2024/10/17(木) 11:01:19.65 ID:P7X9/HPx0.net]
- >>422
これ、static_assertだけ修正してもしょうがない気がするんだけどなぁ 他にも実体化しないはずの分岐でチェックされてエラーにされることあるし まぁ条件式に無理矢理テンプレート入れて回避は出来るけど
- 503 名前:デフォルトの名無しさん mailto:sage [2024/10/19(土) 17:30:35.94 ID:vb3IsOJN0.net]
- >>491
Rustのオブジェクトの所有権管理の強制はコンパイラに従う限りリークしない (病的な反例があるかどうかは知らん からリークの話ではないが、GC付き言語で解決という香具師が現れたから
- 504 名前:デフォルトの名無しさん mailto:sage [2024/10/19(土) 17:31:10.99 ID:vb3IsOJN0.net]
- >>490な発言になったんじゃないの
知らんけど
- 505 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 07:19:50.64 ID:ThoL8xQh0.net]
- >>503
RustはRcの循環参照解決できたの? 公式ソースある?
- 506 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 14:54:46.51 ID:WHCxApN50.net]
- C++派だが、Rustをもってしても、相互参照みたいなものは、人類には早いらしい
(設計段階で)無理しないこったな。。
- 507 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 15:57:11.21 ID:Hhc6wfX80.net]
- そもそも静的解析で解決できる問題か?
- 508 名前:はちみつ餃子 mailto:sage [2024/10/21(月) 16:03:29.88 ID:6JU3cZPt0.net]
- 循環参照をしたいときに出来ないのも困るしな。
なるべくやらないに越したことはないが、やるなら後始末は人が考えないと仕方ないわ。
- 509 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 22:48:14.20 ID:XvJERuqr0.net]
- 食事する哲学者の問題……
Rustだと循環参照するコードを書きにくくなっているから 循環参照によるリークとか病的な反例のうちなんじゃないの 知らんけど ノードNode同士が論理的には循環参照し得るんだけど その所有権をスーパーバイザ的な配列superArray: Node[]が持っていて、
- 510 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 22:53:33.76 ID:XvJERuqr0.net]
- Node間の参照はsuperArrayのindexで済ませるというのもRustではすんなり通してくれな
いんだっけどうだっけ…… Node& node1 = superArray[0]; Node& node2 = superArray[1]; node1.next = 1; superArray[node1.next].value = 123; // node2.valueに書く node1.nextがsuperArray[]の添え字範囲内であることを機械的に保証するためにRustはどんな魔法を使ってくれる のか
- 511 名前:はちみつ餃子 mailto:sage [2024/10/22(火) 11:28:00.82 ID:UXnTPhGj0.net]
- >>510
Rust では実行時にチェックされて範囲から外れていたら panic (C/C++ で言うところの abort みたいなもの) する。 https://doc.rust-lang.org/std/ops/trait.Index.html#tymethod.index C/C++ のように配列がポインタになるということはなく、スライス (C++ で言うところの span みたいなもの) が基本型として組み込まれているので範囲チェック出来る。 コンパイル時に範囲内であることがわかる状況なら最適化で消えることもあるみたいだけど 実行時に外部から入ってくる値に依存することもあるので実行時にチェックしないとどうしようもない。
- 512 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 13:44:32.71 ID:A9ortPvu0.net]
- enum、
文字列への変換、 大変すぎて、ビックリした
- 513 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 14:06:10.17 ID:/lht/Ba/0.net]
- 俺はenumの機能を拡張するクラスを自分で定義してるな
それで文字列変換も文字列からの変換も出来る
- 514 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 15:41:01.09 ID:xcgYWtNU0.net]
- autogenerated.txt.c みたいなの使うのも手だぞ 急がば回れ
そしてCよりはうまく書ける
- 515 名前:デフォルトの名無しさん mailto:sage [2024/10/29(火) 08:22:28.04 ID:XRXAB2XQ0.net]
- >>514
うーん、どんなもの?それ
- 516 名前:デフォルトの名無しさん mailto:sage [2024/10/29(火) 13:58:12.41 ID:WYOK+g300.net]
- 好きなように書いて、好きなように変換して、途中でincludeする
簡単に書くもよし、ガッチガチにチェックするもよし
- 517 名前:デフォルトの名無しさん mailto:sage [2024/10/30(水) 23:11:10.17 ID:x0G86HEF0.net]
- HAGE(CAUWA1)
HAGE(CAUWA2) HAGE(CAUWA3) : みたいなテキスト作っといて 手コキストを#includeする手前でHAGEの意味を変えてやるとうまいこと一元化できる
- 518 名前: mailto:sage [2024/10/31(木) 00:43:29.18 ID:ET2RcGMR0.net]
- カウワ?
- 519 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 01:08:33.55 ID:gisW4Gdb0.net]
- magic_enum教えてやれや
じじいは感度低いから知らんか
- 520 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 05:43:35.79 ID:J4xtBqBy0.net]
- みてきた それが人気の実装か
やりたいこと次第だが、オーバスペック感はある ちょうどほしかったんなら止めないけどね
- 521 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 10:56:16.92 ID:++2hP8JV0.net]
- 横からなるほどー!
__PRETTY_FUNCTION__ / __FUNCSIG__
- 522 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 15:32:14.58 ID:IcW65SaY0.net]
- あのー、アメリカグーグルで、検索すれば、良いのがでてきた
日本は、でてこない これは、やっぱり、レベルなんだろうね
- 523 名前:デフォルトの名無しさん [2024/11/01(金) 19:53:27.66 ID:TgBKHsuNa.net]
- >>518
あさひ奈央
- 524 名前:デフォルトの名無しさん mailto:sage [2024/11/02(土) 09:17:27.71 ID:KpOoS8wa0.net]
- >>522
アメリカグーグルって言い方からして頭悪そう
- 525 名前:デフォルトの名無しさん (ワッチョイ 5910-fVPo) mailto:sage [2024/11/05(火) 08:04:39.53 ID://VVBUiD0.net]
- magic_enumは個数制限がきついんだよな・・256くらいが限度じゃなかったっけ
- 526 名前:青木康善 mailto:sage [2024/11/06(水) 17:05:23.05 ID:vfgxFq1Ya.net]
- c plus plusとjava、電子音楽作成にどっちが向いてるかな?早いのは無論c plus plusだろうけど。
- 527 名前:デフォルトの名無しさん mailto:sage [2024/11/06(水) 17:09:08.31 ID:jrSvpMvx0.net]
- 作成というが、記述したいのか、波形合成したいのか、はたまた生成(AI等)したいのか。。
- 528 名前:デフォルトの名無しさん mailto:sage [2024/11/06(水) 17:14:36.09 ID:P7rcAaD30.net]
- なんでjava?
- 529 名前:デフォルトの名無しさん mailto:sage [2024/11/06(水) 20:06:37.45 ID:TrFjb6KE0.net]
- >>526
C++ね 記号の入れ方知らないのかな
- 530 名前:青木康善 mailto:sage [2024/11/06(水) 20:56:51.96 ID:XG1hV+N8a.net]
- C soundというのはかつてありましたが。javaでやろうかな。C++は自分にはハードル高すぎます。
- 531 名前:はちみつ餃子 mailto:sage [2024/11/06(水) 21:37:08.81 ID:O6Mhx+Gj0.net]
- 相談スレなんだから相談しなさいよ。
独り言を書きたいなら X で。
- 532 名前:デフォルトの名無しさん mailto:sage [2024/11/06(水) 22:48:47.88 ID:tlKINjNQr.net]
- 5ちゃん初めてなんでしょ。浮いてるのはほっとこう、じきに慣れてくれる
コンパイラがCらしいね。でもjavaからも操作できる実績があるって こういうときは、「やってみて脳汁が出そうなほう」でいいとおもう 結局モチベなんで
- 533 名前:はちみつ餃子 mailto:sage [2024/11/07(木) 03:05:44.48 ID:LEgJ6Wm00.net]
- Csound は公式に Python や Java 用のラッパーは用意してるみたいだから得意なのでやればよさそう。
ところで固有名詞は正確に表記してくれないと探しにくいやで。
- 534 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 17:26:41.87 ID:k0cYSKPq0.net]
- g++とclang++が混ざった環境なのですが、g++でコンパイルしたバイナリはstd::stringとか
名前に__cx11というプレフィックスが付き、一方clang++の方は__1というものが付くようです とりあえず、clang++の方で__cx11が付くようなバイナリを生成するにはどうしたら いいでしょうか?
- 535 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 17:28:48.87 ID:k0cYSKPq0.net]
- すみません、__cx11じゃなくて__cxx11でした
- 536 名前:はちみつ餃子 mailto:sage [2024/11/08(金) 17:41:34.61 ID:Me1tPYCI0.net]
- 名前だけ合わせても具体的な実装方法が違えばどうせクラッシュするから意図的にマングルルールを違えている。
https://gcc.gnu.org/onlinedocs/gcc/Interoperation.html#Interoperation
- 537 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 17:52:36.03 ID:k0cYSKPq0.net]
- >>536
なるほど、要は「C++コンパイラ、混ぜるな危険」ということでしょうか?
- 538 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 18:12:15.75 ID:6Qfff3nN0.net]
- 例外とか互換性があるんかいな?
- 539 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 18:14:37.25 ID:6Qfff3nN0.net]
- C++コンパイラでコンパイルするにしても
ソースコードをCの範囲に留めて 関数プロトタイプを extern "C" すれば大丈夫だよ
- 540 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 18:18:53.42 ID:k0cYSKPq0.net]
- >>539
なるほど、例えばこんな感じなら大丈夫なんですかね? g++でコンパイルされたバイナリのグループAとclang++でコンパイルされたバイナリの グループBがあったとき、AからB(またはその逆)を呼ぶときは必ずCリンケージの関数 経由にする、とか....
- 541 名前:はちみつ餃子 mailto:sage [2024/11/08(金) 18:25:46.25 ID:Evz7xgHe0.net]
- >>540
OK。 C インターフェイスの範囲ではどちらも同じ ABI (Application Binary Interface) に従ってるはず。
- 542 名前:デフォルトの名無しさん mailto:sage [2024/11/08(金) 18:35:59.90 ID:k0cYSKPq0.net]
- >>541
なるほど 皆さんどうもありがとうございます
- 543 名前:デフォルトの名無しさん mailto:sage [2024/11/09(土) 19:08:22.86 ID:djyKk80a0.net]
- 昔std::vector<T>とかstd::stringを前のコンパイラでビルドしたDLLに渡したら以下略
やっぱコンパイラを混ぜるときはextern "C" な関数にプリミティブな型のみを渡すインターフェース設計にするパティーンが安牌 文字列とか渡したかったらあくまでchar[]にすべき……
- 544 名前:デフォルトの名無しさん mailto:sage [2024/11/10(日) 16:10:22.46 ID:ck6aMoNGM.net]
- >>536
この場合は別々に標準ライブラリがリンクされる、つまり2つ動くのかな?
- 545 名前:デフォルトの名無しさん mailto:sage [2024/11/10(日) 17:48:03.99 ID:cLh8//6O0.net]
- 単にリンクするだけではどっちかのライブラリのスタートアップしか呼ばれないから
呼ばれてない方のライブラリの初期化がされなくてまともに動作しない問題が残ると思う
- 546 名前:はちみつ餃子 mailto:sage [2024/11/10(日) 18:18:05.60 ID:R/A45v0+0.net]
- 仮にどうにか辻褄合わせが出来てちゃんと動いたとしても将来の開発環境・実行環境でどうなるか予想しづらいというのもある。
- 547 名前:デフォルトの名無しさん mailto:sage [2024/11/10(日) 18:55:50.75 ID:g8WH2rn90.net]
- こういう感じの実装を見かけたんだけど、ptrって解放済みの領域を指してないよね?
int *ptr = NULL; std::map<char, int> m; m.insert(std::make_pair('a', 30)); { std::map<char, int>::iterator itr = m.find('a'); if (itr != m.end()) ptr = &(itr->second); // ここでitrは解放される } if (ptr) printf("*ptr = %d\n", *ptr); // 大丈夫?
- 548 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cd32-bar5) mailto:sage [2024/11/10(日) 19:59:53.20 ID:a6nPaG4v0.net]
- >>547
itr が指してる先は m の一部なのでまだ生きてる。 問題ない。
- 549 名前:デフォルトの名無しさん mailto:sage [2024/11/10(日) 20:31:11.60 ID:g8WH2rn90.net]
- >>548
あざっす!なるほど、よかった〜
- 550 名前:デフォルトの名無しさん mailto:sage [2024/11/11(月) 00:36:44.76 ID:6qsu0cnY0.net]
- >>545
ヤヴァイやん>>539しても全然OKじゃないやん……
- 551 名前:デフォルトの名無しさん mailto:sage [2024/11/11(月) 00:38:49.39 ID:6qsu0cnY0.net]
- ただしウィンドーズのDLLの呼び出し場合は>>539に従っていれば問題無いはず……
ランタイムの初期化エントリはDLL毎に_DllMainCRTStartup が用意されてDLL初期化時に呼ばれる
- 552 名前:デフォルトの名無しさん (ワッチョイ 759b-NX7e) mailto:sage [2024/11/11(月) 16:46:00.51 ID:XlNa4SSE0.net]
- https://www.openwork.jp/company.php?m_id=a0910000000FrzY
- 553 名前:青木康善 mailto:sage [2024/11/12(火) 22:22:32.82 ID:svwbS+Oga.net]
- 独習C++を図書館で借りました。よく、こんな、難しく、エグい言語が出来ますねみなさん。
- 554 名前:デフォルトの名無しさん (ワッチョイ 1d1f-hYHe) mailto:sage [2024/11/12(火) 22:26:44.98 ID:r67kfyB40.net]
- 他に選択肢がなかったんや😭
あと最近はobjective-cとかいう悪魔合体に比べたらなんでもマシな言語に思えてきてる
- 555 名前:デフォルトの名無しさん mailto:sage [2024/11/13(水) 01:53:29.63 ID:CoujH3FQ0.net]
- Objective-C++もよろしく
- 556 名前:はちみつ餃子 mailto:sage [2024/11/13(水) 02:14:12.02 ID:Gj2zjD3b0.net]
- >>553
汚いが、必要なものはある。 綺麗に整理されてても必要なものがないよりは良い。
- 557 名前:デフォルトの名無しさん mailto:sage [2024/11/13(水) 03:47:19.43 ID:rKuXlBFV0.net]
- そーだそーだ
C++は難しいからObject Pascalやろうぜ!
- 558 名前:デフォルトの名無しさん [2024/11/14(木) 07:49:57.71 ID:z8CYzrjO0.net]
- C++女学院の人々ってまだ読める所ある?
大好きだったんだけど。
- 559 名前:デフォルトの名無しさん (ワッチョイ a501-3n/g) mailto:sage [2024/11/14(木) 12:23:07.88 ID:DkukOutW0.net]
- >>554
C++と悪魔合体してObjective-C++とかなってるけど自分は実用的に感じた 全部それで書こうとは思わんけど、C++との共存のレベルが高くて鼻血出そうになったわ OSやその他Apple系APIとのやり取りはObjC++、それ以外のソースはC++のみ、とかも簡単だし
- 560 名前:デフォルトの名無しさん (アウアウエー Sa13-vkNS) [2024/11/14(木) 14:52:24.21 ID:a5xmyjQfa.net]
- >>553
若い人がCからC++の増築増築で可笑しくなって行った歴史をなぞるのは無意味ではない >>554-555 Objective-C や Objective-C++ の方がまし やる気は無いけどObjectPASCALはDelphiだっけ
- 561 名前:デフォルトの名無しさん [2024/11/19(火) 11:41:41.34 ID:1x1cv+pZH.net]
- 演算子のオーバーロードない言語はダメだ
- 562 名前:デフォルトの名無しさん mailto:sage [2024/11/19(火) 11:53:31.53 ID:5+FMYvHmM.net]
- 演算子オーバーロードがもたらす言語仕様の複雑性を理解してたら軽々しくそういうことは言えない
- 563 名前:デフォルトの名無しさん [2024/12/08(日) 01:45:50.04 ID:EhZF4lXKz]
- 5chの管理人がRustマンセー野郎でRustの悪口言ったらBBS規制になっちまった。
それでこっちに書いときます。eigenという行列演算、線形代数ライブラリが ありますが、これ列主順なんですね。なので、[]演算子のオーバーロードでは 行列Aのi行j列の要素にアクセスするときにA[j][i]という奇妙な順番でないと いけない。それでeigenでは行列に対してA[i][j]みたいなサポートはしていない。 だから[]ではなく[][]演算子みたいな拡張がほしいと思いました。
- 564 名前:デフォルトの名無しさん [2024/12/08(日) 02:15:01.21 ID:EhZF4lXKz]
- マトリックスクラスを宣言すると
matrix_<double> a[3][3];
で何の対策もせずに、a[0][1][2][3]=1; みたいなアクセスは問題なくできるんですよ。 サイズ宣言時にa[3][3](3,3);というダサい形に。でもこれはstdsize(3,3);とでもして おけば解決します。でも、列主順のときにはa[j][i]がネックに。()演算子なら列主順 だろが行主順だろが問題なくオーバーロードで解決できるんですが、A(i,j)の添字が0 から始まるのはfortran使っていた自分には違和感があります。
それでA[i,j]? C言語のA[i][j]の伝統を捨てるんですか? 感性の問題ですけど。
- 565 名前:デフォルトの名無しさん [2024/12/08(日) 17:15:54.70 ID:EhZF4lXKz]
- なるほど。C#に引っ張られたわけですね。a[i][j]の ][ を , に置き換えるプログラム
を作成すれば大きな影響もなく変換できそうですね。 でも、a[i][j]は残すんですよね?残さないと、ブーイングもしくはC++23もういいわ になりそう。
|

|