1 名前:デフォルトの名無しさん mailto:sage [2018/12/28(金) 06:04:52.38 ID:ufThBpcD.net] エスケープシーケンスやWin32APIなどの環境依存なものもOK そのような質問は必ず環境を書きましょう 半角空白やタブでのインデントはスレに貼ると無くなります コードを貼れる所 codepad.org/ https://ideone.com/ 前スレ 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1530384293/
545 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:00:52.25 ID:qLJosHl4.net] 残念ながらバカはmutable使い出すから無意味。
546 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:06:41.22 ID:2wDVhIfR.net] 俺は書換られたりはしない たぶんしないと思う しないんじゃないかな ま、ちょっと覚悟はしておけ
547 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:47:53.06 ID:ORSkBdqU.net] constっていちいち書くのめんどい
548 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:48:50.68 ID:haqs87u6.net] >>541 何を言ってるのか分かりません
549 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 01:15:50.47 ID:is7scwjD.net] いやまてまて・・このスレの99%はネタでできてるけど そこ分からないのはダメだぞ まさに初心者向けの話題ではある
550 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 07:21:28.17 ID:kwD2lttR.net] >>545 mutable使ったらいかんのか
551 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:50:14.25 ID:FFCpIhtq.net] こいつ能力低いなと思う奴のソースを見ると、 constなんて全く付いていない場合が多い
552 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:00:44.87 ID:eyx8DEIH.net] >>547 ちょっとわかるわw あと3文字くらいが良かった
553 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:02:28.69 ID:zE1f0a65.net] cnst
554 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:40:01.37 ID:4ommn3XM.net] constはキーボード入力の観点からはそんなに苦じゃない stdとかarrayが割りと入力しづらい 左右均等に割り振られてると楽な感じ
555 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:57:22.91 ID:FGRIaiAP.net] const char* a = "hoge"; const char* const a = "hoge"; の違いがわからんやつは死ねとよい
556 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:22:22.64 ID:qLJosHl4.net] そんな違いを意識しないと読めないコード書く方がバカだと思う。
557 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:24:20.55 ID:eyx8DEIH.net] (そんな初歩中の初歩でマウンティングドヤ顔して大丈夫っすか先輩)
558 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:37:36.70 ID:haqs87u6.net] >>549 >>548 のこと言ってるの? >>541 は、ポインタの指し先だけでなく、戻り値を格納する変数自体を定数にしなければさほど意味がないっていう主張だと理解したけど、合ってる? ローカル変数を定数化したければ呼び出し元が勝手にやればいいし、戻り値をconst char*にする重要性に比べたらそれをする必要性なんてごく僅かで"さほど意味がない"なんてとても言えないと思うけど
559 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 12:08:33.20 ID:6sZPiHms.net] >>555 ドヤ顔して噛むなよ
560 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 12:15:09.98 ID:sIV9Z0cV.net] C++ってC言語の負の遺産を引き継いだ言語だろ? constは廃止すべき
561 名前:デフォルトの名無しさん [2019/02/24(日) 15:05:59.28 ID:uFOuUY9d.net] constみたいな糞どうでもいい些末なことより 配列のサイズとオーバーフローの管理を強化するべきだったんだよ 互換性捨てなきゃならんが
562 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 15:35:26.16 ID:2tRfk65D.net] >>561 そこはCの負の遺産を引き継いだのではなく、可能な限り実行時オーバーヘッドを小さくする実装手段を提供するというCの基本スタンスを継承しただけだろう。それが負の遺産というなら他の言語の方が適切なんだからそれを選択すればいいよ。 C++を使いたく、ある程度の実行時オーバーヘッドが許容できるときはstd::vectorという選択肢があるけど、それじゃダメなのか?
563 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:47:00.15 ID:RgZ/0jGo.net] >>560 const に関しては C++ で新規導入された仕様を ANSI C に逆輸入、 みたいな感じじゃなかったっけ? そのせいか、定数としてconst変数を使えないとか中途半端になってる。 C++ が C の負の遺産を切り捨てるべきだったとしても、 const はその「C の負の遺産」の範疇に含まれないかと。 いずれにせよ、今さら言っても、現に存在する C++ はどうもならんよね。 そういう新プログラミング言語が出ても、それは C++ じゃない別物ってことで。
564 名前:デフォルトの名無しさん [2019/02/24(日) 16:57:30.90 ID:2fcQjxFq.net] そういうのはDで良いと思う
565 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:18:54.78 ID:NUlc6EOn.net] とりあえず数値以外はconst参照渡しが基本でおk?
566 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:34:26.40 ID:qxqTarkR.net] >>561 at()使え。 >>560 constが負の遺産とか頭おかしい。 ドキュメントにこの変数は内部で変更しませんとか書くよりよっぽど楽だろ
567 名前:はちみつ餃子 mailto:sage [2019/02/24(日) 17:36:09.20 ID:gUJTdPsI.net] >>566 負の遺産だよ。 const キーワードを廃止して デフォルトの挙動を const に出来れば どれほど良いことか。 という意味で。
568 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:40:12.42 ID:qxqTarkR.net] >>567 それなら同意するけど>>560 にそんな意図はないでしょ
569 名前:はちみつ餃子 mailto:sage [2019/02/24(日) 17:43:09.22 ID:gUJTdPsI.net] >>568 皮肉っぽい言い回しをしてみたかっただけ。
570 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:48:01.19 ID:qxqTarkR.net] いやん
571 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:48:30.19 ID:qLJosHl4.net] そこまで挙動を変えるなら別言語でやれば良いし、実際rustとか他の言語としてあるだろ。
572 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:53:22.05 ID:2wDVhIfR.net] 使わないで済ませる事ができるなら、使わないで置く方がうまく行く
573 名前:デフォルトの名無しさん [2019/02/24(日) 19:20:28.43 ID:iK4D+UQi.net] >>567 >>571 も書いてるけど、それ何てRust?と思った。
574 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 01:48:46.07 ID:LzC1voP1.net] 負の遺産でも互換性とのトレードオフだしな。 いいことばかりじゃないけど、悪いことばかりでもない。 とりあえず const は付けれるだけ付けとけというのが ベストプラクティスだと思う。
575 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 12:52:11.08 ID:y5m/9TYH.net] >>567 引数だけなら同意してもいいけど変数はどうするんだ? for(variable int i = 0; i < 10; i++){ とかはあまり書きたくないぞ
576 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 13:56:12.72 ID:LzC1voP1.net] >>575 まあそこはもしもの話だから。 最初から const なら文法もそれに 沿ったものになってただろうさ。
577 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 17:39:50.14 ID:ubojwQhV.net] 確かに、関数内で作ったローカル変数だけデフォルト変更可能、 他所から持ちこんだ、ポインタの先や参照、グローバル変数へのアクセスは 基本的に読み出しのみ許可で、明示した場合だけ変更できる、なら 「勝手に書き換えたのは誰だ!?」ってバグは減りそうだね。
578 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 18:51:13.68 ID:y5m/9TYH.net] >>577 ああ、それなかなかいいかも
579 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 20:42:12.40 ID:lqvZQt+c.net] そうそう、だから普通にC++書いてる人は とりあえず引数に全部 const つけるでしょ それはそういうことだよ
580 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 20:44:41.85 ID:x+rkal0w.net] 引数じゃなく method の const は後悔することがちょいちょいと class foo { public: void method() const; };
581 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 20:50:25.72 ID:1EOktSCH.net] constつけときゃいいってのもなんか胡散臭い印象しかないな。 そんなことよりも変更や生成を行う場所、タイミングを局所化するってのが本質だと思うが。
582 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 20:56:50.13 ID:LzC1voP1.net] const が必要なところに付けるって考えるよりは const では駄目なところでは外すという考え方の方が 安全っぽいという話であって、 適切に使い分けろというのは大前提のことだってことは補足しておく。 const が当たり前だって気持ちになると 変更が必要な個所は自然に局所化されるでしょ。
583 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 21:58:02.00 ID:rMTHv0xs.net] const連鎖くらったらほどほどでいいやと思うようになる
584 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 22:14:33.44 ID:1EOktSCH.net] なんというかもう修正が一切されないコードしか想定してない印象を受ける。
585 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 22:37:43.55 ID:rMTHv0xs.net] やりすぎオブジェクト指向といっしょで 事故起こりにくいとこでこだわっても変更に弱くなるだけ
586 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 22:51:58.14 ID:ki6l711j.net] 複雑怪奇で理解不能にしておくと、 変な改造されないで済む
587 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 00:51:25.18 ID:wcHiR3Ib.net] 初心者で申し訳ないんですが、c/c++を学ぶため何か作りたいのですが、cで作る意味のあるいいお題はないでしょうか。JavaやC♯、rubyは一通りかける感じですがcはmallocなど知ってはいても使ったことはないレベルです。よろしくお願いします!
588 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:02:30.50 ID:Ujo6lghI.net] >>587 ビットマップ画像を読み込んでブラーをかけてビットマップ画像として出力
589 名前:はちみつ餃子 mailto:sage [2019/02/26(火) 01:30:28.38 ID:azIRgqwp.net] >>587 いきなり「実務的な」プログラムを書くのはオススメしないよ。 C/C++ には歴史的経緯によってクソな落とし穴と「未定義」がたくさんあるので、 たとえ期待通りに動いたとしても正しくないプログラムであることは多い。 初心者向けのしょうもない (他の言語でやる入門と大差ないような) 題材で小さなプログラムを書いて ブログとか Qiita とかに書いておけばベテランがよってたかって指摘してくれるさ。 そういうので基本的な落とし穴くらいは理解してから進んだ方が良いと思う。
590 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:35:07.18 ID:F6jD76wH.net] HDDの中を検索するプログラムとか、整理するプログラムとか こういうのがあったら便利だなっていう物を考えて作ってみる 途中分からなくなったら、ここに相談に来ると良い 親切な人が教えてくれる、かもしれない あてにはしないこと
591 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:49:53.01 ID:2prSgTvN.net] おっさんらジイさんらの世代だと 「こういうのあったら便利だよな」と思って作りはじめるパターンは有効だったけど 今はそういうの探したらほとんどあるからある意味不幸だよな しかも自分で作ってたらとてもここまで作ってるヒマないっていうぐらい高機能なのが多いし
592 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:50:17.99 ID:wcHiR3Ib.net] >>588 >>589 >>590 ありがとうすごく参考になりました。デスクトップランチャーとかほしいと思って作るならWPFだし、Cで実用的なほしい物ってむつかしいんですよね。初心者向けの小さなプログラムは上記のブラーとかでしょうか?Cで書く意味がある題材ってわからなくて。。。
593 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:59:04.98 ID:H+xdnOpD.net] >>592 そもそも自分がC/C++を身につける意味があるかというとこらから見直した方がいいのでは? 直ちに必要な訳ではないが将来的に身に付けたいというなら、先に他の人が言っていたようにいきなり実用的なプログラムから入るより練習問題レベルの小品をコツコツ作っていった方がいいと思う。
594 名前:はちみつ餃子 mailto:sage [2019/02/26(火) 02:00:19.43 ID:azIRgqwp.net] どうしても自分が欲しくて既存のものがないってケースでも、 既存のものをバッチファイルで繋げればできるって程度のものだったりするもんな。 そういう意味じゃ、日常ではスクリプト言語の方が使うことが多いとは思う。 俺が一番最近に書いた C のプログラムもスクリプト言語の拡張パッケージだし。
595 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 02:19:19.20 ID:F6jD76wH.net] >>592 例えば容量の大きなHDDだと、同じファイルが複数場所にあったりするじゃない? そういうのを見つけて、チェックした後削除すれば容量節約という実利もあるよ
596 名前:はちみつ餃子 mailto:sage [2019/02/26(火) 02:22:08.89 ID:azIRgqwp.net] >>592 C/C++ で書く意味ということに最初は拘らなくてよいと思う。 こだわらなくてもプログラムの構成の仕方、書き方には確実に違いがあるから、 むしろ比較しながら学んだ方がいいかもしれない。
597 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 02:40:55.07 ID:OTQ63qDn.net] C/C++使う必要性がわからないならやらないのが正解 今だにこんなクソ言語使ってるのはそれしか選択肢がないから あるいは物好きな言語マニアか
598 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 03:33:39.99 ID:belfWXD5.net] 先に他の言語やらんとC++の必要性はわからんと思う
599 名前:588 mailto:sage [2019/02/26(火) 08:48:58.01 ID:+14u2RP+.net] こんなにレスもらえると思いませんでした、他の言語スレや板だともっと殺伐としてます。。。ありがとうございます。 低レイヤを高速で処理できるのが魅力だと思うので最終的には任意のパケットを送受信できるデーモンを作りたい。ので、>>595 のいう同名ファイル検索デーモンから始めようと思います。
600 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 09:06:06.17 ID:OTQ63qDn.net] ならechoサーバーから入ってhttpサーバーという定番ソケットプログラミングコースもおすすめ まぁでもその検索デーモンとやらでファイルの扱い勉強してからでいいだろうな 高速化に興味あるならC/C++の標準ライブラリでなくOSのnativeのapiを積極的に使うのもいい ファイルならメモリマップドファイルを使ったり(ファイル名調べるだけなら不要だけど) 他には検索アルゴリズムに凝る方向とかね
601 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 11:48:20.70 ID:9FjD9aLm.net] >>599 同じファイルというのをどう判定するかだな ファイル名なのかハッシュ(中身)なのか
602 名前:デフォルトの名無しさん [2019/02/26(火) 14:41:46.79 ID:8+7ktUtN.net] globalに宣言されてる変数と同じ型同じ名前で 関数内にlocalに宣言されたものがあるとき 警告出してくれるオプションって何だっけ
603 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 16:05:20.40 ID:5MxkS3P7.net] >>599 なんで、そんな面倒くさい事をしなきゃならないんだ? Ruby なら、PowerShell から、1-liner で、 Rubyで作られた遅いウェブサーバー、WEBrick が起動する ruby -run -e httpd . -p 8080 そのフォルダに、index.html があれば、 何も考えなくても、これでブラウザからアクセスできる localhost:8080
604 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 16:39:31.27 ID:2RZ4BMiv.net] >>603 お前は相手の意図を理解する気がまったくなく、人とのコミュニケーションができないことをさっさと理解して、巣にかえって閉じ籠っていてくれ。 ここはお前に用がある奴は一人もいない。
605 名前:588 mailto:sage [2019/02/26(火) 17:33:10.46 ID:+14u2RP+.net] みなさんありがとう 今日は会社で暇だったのでコピペベースながらUDPで任意のメッセージ送受信出来るようになった ヘッダでincludeする構造体って宣言済みのクラスみたいな感じで使えることを理解しました。(udphdrを使わずにsendしたからか、送れたけどudpチェックサムは自動で計算されなかった) tcpは、というかhttpサーバは難しそうですが頑張ります!
606 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 17:44:16.64 ID:MNG9zBp3.net] >>602 gcc/clang だと -Wshadow だな。 -Wall -Wextra とは別に指定する必要があるようだ。 細かいことを言えば、同じ型でなくても、名前が隠される場合は警告が出る。 今ネットで調べて確認、これからオイラも使うことにする。
607 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:22:44.06 ID:8Je4SUY+.net] 同じ意味だけど型が違うときの変数名ってどうされてますか? いつも困ってます。 例) float2 fPos( 1.0f, 2.0f ); XMFLOAT2 fPos( fPos.x, fPos.y ); ←当然同じ名前は×
608 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 07:11:30.50 ID:tay7IMIk.net] >>607 float2でfPosって付けてるならXMFLOAT2ならxPosとかでいいと思うが…
609 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 07:53:03.71 ID:3Jl+ieqT.net] >>607 よくシステムハンガリアンは悪と言われるけど、この例のように同じ内容で型名の違いに意味がある場合は、型名に関するプリフィックスをつければいいんでない? とあるライブラリに渡す境界部分ならそのライブラリ名に関するプリフィックスとか。
610 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:12:35.49 ID:8imVoWCJ.net] 初心者ですみません、こんなコードをみたのですが2点わかりません。 char packet[1500]; memset(buf, 0, sizeof(buf)); ether_header *eh; eh = (struct ether_header *)packet; たぶん、1500byteのメモリを確保して0埋め、ether_header構造体のポインタを宣言してpacketのアドレスを渡す、としたいのだと思います。 分からないのは0埋め対象が宣言されていない変数bufであること、packetのアドレスを渡すのにわざわざether_header型のポインタにキャストしている2点です。よろしければ教えてください。 https://qiita.com/marufeuille/items/81f323a52a6fd3bd530c
611 名前:さまよえる蟻人間 mailto:sage [2019/02/27(水) 19:18:47.40 ID:AjY/hWvK.net] bufはpacketの間違いか? 多分。
612 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:25:41.76 ID:uRVYM9rZ.net] キャストしてるのはwarning回避じゃないか?
613 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:41:57.94 ID:vHAcjSp1.net] >>610 の引用元を見るとコード片だから、実際にはコンパイルしてないんだな。 char packet[1500]; memset(buf, 0, sizeof(buf)); は、packet と buf が同じもので、正しくは char packet[1500]; memset(packet, 0, sizeof(packet)); なんだと思う。最初は両方とも buf と書いてあったけど 「もっと自ら語る変数名にしよう」と packet に変えたはいいが、 memset() の方では直し忘れた、というお話かと。 (struct ether_header *) のキャストは、コンパイラの警告対策だな。 …って言うか、これキャストしないでも警告だけで通るのね。
614 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:48:31.45 ID:cPR259KO.net] やってきたパケットのうち 頭のEthernet Header にフォーカスしてる意図でのキャストかな? 最終的には char [1500] で受け取ったパケットの配分を(パディング無しで) struct TCPpacket { Ethernet_Header eth; IP_Header iph; TCP_Header tcph; char* TCP_payload[]; /* 末尾可変サイズ */ }; に配分したいんだろうけど、手を抜くなら union にしそうだわ union Packet { struct TCPpacket tcp; char* packet[1500]; };
615 名前:603 mailto:sage [2019/02/28(木) 00:25:33.39 ID:OS/9xoBt.net] >>608 >>609 ご提案ありがとうございます! 何らかのプリフィクスで識別が妥当そうですね。 ローカル名前空間みたいな概念があると便利そうですが・・・。 local namespace XM { XMFLOAT2 fPos; } float2 fPos( 1.0f, 2.0f ); XM::fPos = { fPos.x, fPos.y };
616 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 09:35:29.75 ID:KtBFXYBy.net] どうせ長ったらしい関数書いてんだろ それがそもそもの間違い
617 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 12:25:31.13 ID:o9FaNCnF.net] >>611 >>612 >>613 ありがとう、cがとんでもなく難しい言語かと誤解するところだった。
618 名前: mailto:sage [2019/02/28(木) 20:15:42.34 ID:FII1Vkt+.net] >>587 https://mevius.5ch.net/test/read.cgi/tech/1549160513/ にお題がいっぱい転がっています…
619 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 22:42:25.23 ID:chn/XevV.net] いやーCは簡単な言語だけどC++はとんでもなく難しい言語だと思うぞ 解説本が電話帳より分厚いなんてな自然言語超えてる
620 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 22:46:25.10 ID:UN7NGNSN.net] そんな解説本あるのかw
621 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 23:11:49.78 ID:LM7UlKO7.net] それはあいつが悪いだろ‥
622 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 00:09:02.27 ID:TIzWjpCx.net] しかも、言語仕様の改訂が3年ごとと早すぎて、 邦訳解説本はもちろん、原書でもリリースがおいつかず、 仕様改訂を繰り返すたびについてこれないユーザーをふるい落とす恐るべき言語 仕様改訂の世代を重ねるごとに中国以上の人口減少率でユーザー数が減少する既に終わった少子化言語ww
623 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 01:01:16.39 ID:SPEgyt6t.net] なんか皆C++はむずかしいむずかしいっていうが、そんなむずかしいか? 俺的には今時のECMAScriptと各種フレームワークの使い方のほうがよほどむずかしい。 2、3年もすると何だかイノベーションがどうのこうのいってまるっきり別物のコンセプトのがでてくるし・・。 C++なんて基本概念はもう何十年もかわらんだろ。あとはその都度必要なstlとかの機能覚えればいいだけ。 楽なもんだよ。
624 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 01:51:54.22 ID:ejlMN09K.net] 今何も見ずにラムダ式書ける?
625 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 01:55:24.44 ID:aAd1thXX.net] 有名所のライブラリでラムダ式使ってるの見たことない
626 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 06:22:49.33 ID:TGgsjFNR.net] 『プログラミング言語C++』第4版は電話帳より厚いね。 あれは解説書だよな。1300ページ以上ある。 ちょうど新しい電話帳が届けられたばかり。 田舎住まいだから都市部に比べて電話帳が薄いってこともあるけど。
627 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 07:01:09.26 ID:TGgsjFNR.net] C++は新しい言語仕様が次々に追加されるせいで、 同じ細かな処理をするにも人によって書き方が色々になって、 「同じ言語で同じ処理をしてるはずなのにソースは似ても似つかない」 「自分で書くには便利だけど、他人の書いたプログラムは読み解けない」 てな状況になってるんと違うかな。 わざわざストラウストラップ先生が「言語の全部を知らなくても、 徐々に理解しながら使えばいい」と書いてくれてるけど、 他人のソースを読む際には役に立たないアドバイスだよね。
628 名前:デフォルトの名無しさん [2019/03/01(金) 13:03:30.11 ID:ozM8zBQ9.net] >>619 CもC++も仕様は簡単 ライブラリやアルゴリズム考えるのが面倒で生産性が低いだけ それを難しいと勘違いしてるだけ
629 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 13:21:26.51 ID:5w/5u0Tx.net] こういうc++の危険さをまったく認識できてないやつが一番困る std::forwardの意義を誰にでもわかるように説明してみろよ
630 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 15:52:20.02 ID:3z2kkMi4.net] C++11以降とそれ以前で違い過ぎるのが問題では?
631 名前:はちみつ餃子 mailto:sage [2019/03/01(金) 16:02:10.84 ID:Vq7maKYR.net] >>627 「徐々に理解しながら」は、 C を既に知っている人を明らかに想定していて、 今では C がそんなに支配的でもないという状況を思うと適切な動線とは言えないという意味でも あまり役に立たなくなってきていると思う。 ただ、追加された機能を見ると、 新しい書き方の方が間違い難くて綺麗で一貫していることが多いので、 肥大化するから追加するのをやめろとも言い難いんだよな……。
632 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:17:07.89 ID:yZJ4Zkhu.net] 皆、ドワンゴ江添亮の本を読んでいないから、C++ の恐ろしさがわからないのだろう 詳細を突っつくと、無限にややこしいものが出てくるw だから江添でさえ、詳細は省略しますって書いてあるw >>614 1バイトずつ、check sum を計算するような場合は、そういうように、union にするのが定番
633 名前:デフォルトの名無しさん [2019/03/01(金) 17:25:35.13 ID:tC4m5Wn4.net] ●ワンゴ倒産の危機わろすω
634 名前:588 mailto:sage [2019/03/01(金) 17:56:26.55 ID:VPz6Y2H0.net] udpパケットを送れるようにはなったのですが、wiresharkで確認するとudpフレームのchecksumが未定義となっていました。。。 そこで1からやりなおしたいのですが、ソケットはrawで開くべきなのでしょうか。いまはudpなのでdgramで開いてsockaddr_inのインスタンスをつかってsendtoしています。
635 名前:デフォルトの名無しさん [2019/03/01(金) 18:11:15.15 ID:a4IFMTFx.net] checksum計算して値入れてから送れよ
636 名前:デフォルトの名無しさん [2019/03/01(金) 18:18:10.83 ID:6LDVvTwi.net] enumについて教えてください enum { ..\..\VAL1, VAL2 }; このような書き方でコンパイルが通る環境はありますか? case ..\..\VAL1: というのも許される環境はありますか? c/c++
637 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 18:57:53.08 ID:p6eROYwf.net] よくわからんが、識別子の定義を変えたいということか?
638 名前:632 mailto:sage [2019/03/01(金) 19:04:29.12 ID:6LDVvTwi.net] どこかで見た覚えがあります
639 名前:588 mailto:sage [2019/03/01(金) 19:14:27.70 ID:VPz6Y2H0.net] >>635 調べた方が足りませんでした、NICのTCP offloadingという機能が有効になっていたせいで、NICより手前でキャプチャするとunverifiedとなっているようです。大変失礼しました。
640 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 19:23:28.99 ID:HVxvwZsK.net] >>623 >今時のECMAScript いや、ハードウェアに固定されたバイナリーですらなく、ソフトウェア上で決められた決め事になんら意味を見出せないのですが、それでも javascript とかに熱意を抱けるコツがあったら教えてください
641 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 19:25:06.34 ID:HVxvwZsK.net] >>633 いいかげんにニコ動をなんとかしてほしいです、昔も重かったけれども今も重い、これはなんとかならないのですか?
642 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 19:27:08.91 ID:YTopxKYT.net] >>640 >>623 の書き込みのどの部分を読んでその質問がでてきたんだ?なんかバグってね?
643 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 21:35:36.90 ID:Y8fj+4tW.net] 引数のmove受け一つとってもrustの3倍くらい難しくなってるわな。 シンタックスが特殊だし、オーバーロードはされるわ、特殊な右辺値に対してのみ動作するとか 根本からおかしい。
644 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 09:08:32.90 ID:NYNVQHNm.net] 物作った事の無い人の重箱の隅つつき+詳細未記載本なんて 時間の無駄だというのが良くわかった。 石田晴久の通信プログラムとか技術書展の方がマシ
645 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:46:55.44 ID:jZcAiOx4.net] ソース書くときに気を付けるのはとにかく引き継ぎしないといけなくなったときに楽になるようにって点かな。 上から読み下していったときにわかりやすければなんでもいいと思ってる。
646 名前:デフォルトの名無しさん [2019/03/02(土) 12:38:56.25 ID:+L4gK20K.net] 構造体で例えば struct POINT{ int x, y; }; があるとき struct POINT p = {1, 2}; と定義と代入を同時に出来ますが 一度代入したものを後から書き換えるとき p = {3, 4}; と書くとエラーになるみたいで p.x = 3, p.y = 4; と書かないといけないのが面倒です 先生なんとかなりませんか?
647 名前:デフォルトの名無しさん [2019/03/02(土) 12:45:48.83 ID:+L4gK20K.net] ああできた p = (struct POINT){3, 4}; これでいけました
648 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 13:27:28.31 ID:NYNVQHNm.net] 構造体一括代入はANSI以降の機能だからOS/9とかCP/M68K のC言語では当然のように動かない
649 名前:デフォルトの名無しさん [2019/03/02(土) 13:49:52.82 ID:+L4gK20K.net] C++だと p = POINT(3, 4); もいけるかな
650 名前:デフォルトの名無しさん [2019/03/02(土) 13:50:54.37 ID:+L4gK20K.net] >>648 たぶんそうだったと思います ありがとうございます
651 名前:はちみつ餃子 mailto:sage [2019/03/02(土) 14:04:36.97 ID:tMatklv8.net] >>649 C++11 以降なら p = {3, 4}; でもいけるよ。
652 名前:デフォルトの名無しさん [2019/03/02(土) 14:07:27.41 ID:kDivPjLV.net] 片山さんは何で改名したんですか?
653 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 16:04:24.12 ID:uz1yhwTy.net] C の p = (struct POINT){3, 4}; は、構造体の一括代入に違いないけど、 (struct POINT){3, 4} の部分が「複合リテラル」compound literal だから 使えるのは C99 以降だね。
654 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 16:10:37.25 ID:EmfZa2jP.net] >>647 理由が"面倒"だったのに、文字数増えてるよねそれ
655 名前: mailto:sage [2019/03/02(土) 16:12:43.27 ID:Ud+LwFnR.net] >>653 これは、C++ に合わせてほしかったな、と思うのです
656 名前:デフォルトの名無しさん [2019/03/02(土) 21:57:47.90 ID:nqwTLRnH.net] >>654 要素数によるやろ
657 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 10:43:47.19 ID:lzyzpNmU.net] C++の規格で使いたいならC++使えで
658 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 10:52:31.28 ID:BbxzBxVK.net] c++の規格って言ってもその辺、c++のいつの規格だよって話になるんじゃないの?
659 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 12:23:44.49 ID:eB5he6fi.net] >>633 会社の売り上げに貢献せず、警察を提訴するような キチガイ高卒社員が資産食い潰してるんじゃね?wwww
660 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 12:30:17.98 ID:eB5he6fi.net] >>626 すでに3版でも電話帳より厚いよ まともに読む気になるのは2版までだな。 熱意あるうちはともかく、ふと我に返ると俺何してんだろって。 そんで、言語覚えただけじゃプログラムてかけないしな。
661 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 12:36:20.23 ID:0vjeZZiI.net] C++でまともなWebサービス作れるエンジニアなんて相当単価高そう もうオワコン動画の便所掃除やりたがる奴なんていないだろうし
662 名前:デフォルトの名無しさん [2019/03/03(日) 14:17:56.07 ID:ilhG1tLW.net] オワンゴとは良く言ったものだな
663 名前:はちみつ餃子 mailto:sage [2019/03/03(日) 14:31:57.32 ID:XzFmXWmd.net] サービスを書くのに C++ の比率は高くないかもしれんが、 サービスを支えるインフラには C++ を使うことだってあるだろう。
664 名前:デフォルトの名無しさん [2019/03/03(日) 15:36:52.66 ID:WlpYxc7g.net] 普通はJavaじゃなかろうか。
665 名前:デフォルトの名無しさん [2019/03/03(日) 15:58:13.68 ID:E4UxtVYi.net] Javaは糞
666 名前:デフォルトの名無しさん [2019/03/03(日) 16:24:07.50 ID:D2G4oQ9F.net] 副業解禁で激変する若者世代とマネージャー世代のキャリア観 https://www.businessinsider.jp/post-107782 フリーランスの職種20個の仕事内容と平均年収をわかりやすく解説 https://www.proof0309.com/entry/shokushu 時給1万円のバイトも。会社員向きのプチ副業を、“バイト芸人”が教える https://headlines.yahoo.co.jp/article?a=20190226-00127948-bizspa-bus_all 副業が「会社にバレる人」と「バレない人」の大差 https://headlines.yahoo.co.jp/article?a=20190303-00268007-toyo-bus_all 正社員の10%以上が副業 中には過重労働で体調崩す人も https://headlines.yahoo.co.jp/hl?a=20190227-00010000-wordleaf-bus_all 「副業で年2000万円稼ぐ男」に学ぶキャリア戦略 https://headlines.yahoo.co.jp/article?a=20190221-00266856-toyo-bus_all 加速する「副業社会」正社員の4割が「副業したい」 気になる収入はどれくらい? https://headlines.yahoo.co.jp/hl?a=20190218-00010001-danro-life おすすめ副業22選を現役フリーランスが解説【在宅も可能】 https://www.proof0309.com/entry/zaitaku-hukugyou 会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと https://www.businessinsider.jp/post-165731 フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か https://toyokeizai.net/articles/-/263055 フリーランス人口は増える!今後は仕事もプロジェクト単位になる!? https://freelance.mts-career.com/population/
667 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 16:40:10.01 ID:QDmbu/k4.net] 言語を使う側なのに、大声でJavaは嫌い()
668 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 23:12:33.70 ID:PvgSI+1g.net] >>633 焼そば屋?
669 名前:デフォルトの名無しさん [2019/03/04(月) 04:52:56.59 ID:DAN4+o0x.net] 「困った」と 「助けたい」をマッチングする 新たな出会い系アプリか?
670 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 21:58:39.97 ID:jKyydNU9.net] 最近はスノボにご熱心。
671 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 04:05:49.01 ID:/9uzsfIc.net] まあJavaは糞これは間違いない Java使うぐらいならC#使うほうが10倍まし
672 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 06:49:23.03 ID:O5wD/kWC.net] そんなことあるわけない 100倍は違う
673 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 06:58:59.78 ID:kisxcMe6.net] Javaはコボラーと同じく湿った猫のような臭いがします
674 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 14:00:13.11 ID:CkJINn0N.net] Java並に大規模な開発事例ってC++にはあるの?
675 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 15:25:41.23 ID:fIhIM0AX.net] Windows
676 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 17:12:45.41 ID:YmAHbq9k.net] >>674 人月商売をやってるだけで大規模()とは言わない Linuxカーネルほど大規模なのはJavaではない
677 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 17:33:37.15 ID:/9vlYliD.net] LinuxカーネルってCじゃないのか?
678 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 17:42:59.75 ID:zQd5qKqX.net] javaって大規模なの?
679 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 18:51:08.44 ID:t42KPL8W.net] unreal engineとかクッソ大規模に見えるけどどう?
680 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 19:03:00.43 ID:fIhIM0AX.net] 工数でいえばそんなもんクフ王のピラミッドには遠く及ばないだろう
681 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 19:03:04.57 ID:VOhJ9aa0.net] そもそもjreの基幹部分とかc++だろ
682 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 19:33:34.31 ID:5rQQuIbo.net] クフ王のピラミッドがなんか関係あるのか?
683 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 19:57:12.64 ID:RSECco33.net] 甘い 甘いなぁ 人月換算だと同じだよ 死者数すらも一致してる
684 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 22:23:27.02 ID:kisxcMe6.net] 20年前で70万ステップぐらいでビルドに1Hぐらいだったなあ
685 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 00:39:47.70 ID:oR6mPeK7.net] むしろ>>674 が思う大規模なjavaプロジェクトを知りたい
686 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 00:47:13.50 ID:URVwFrjm.net] 人数かけて、webページの遷移ごとに別人が開発して、似たような処理をするコードが100倍くらいに膨れ上がって収集つかないようなのが大規模なんじゃね
687 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 02:24:32.10 ID:bd8igJ/M.net] そう言われると、それまさにコボルだなw
688 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 09:21:38.79 ID:Bk9kaTOY.net] コボル島ってどっかになかったっけ
689 名前:デフォルトの名無しさん [2019/03/06(水) 09:50:15.63 ID:mg6kC0Yg.net] c++じゃなくてcでnamespaceって使えますか?あるいはnamespace相当の機能ってどうすれば実現出来ますか?
690 名前:デフォルトの名無しさん [2019/03/06(水) 09:53:13.16 ID:mg6kC0Yg.net] 重力波を検出するのに世界中の電子望遠鏡を接続してリアルタイムに通信してるようだけど ああいうシステムのコードって何で書かれてるの? FORTRAN ?
691 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 10:10:00.89 ID:TjQtzcPT.net] >>689 cでは使えない ほぼ上位互換だからc++使えばいいじゃん
692 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 11:25:59.41 ID:1+PBsWw4.net] >>690 マジレスすると、ああいうのはファイルに落として時々バッチ処理してるだけ 言語はだいたいFortranかC++が多いだろうね
693 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 13:12:20.46 ID:+Sk++sfs.net] C++だけは絶対にないな
694 名前:はちみつ餃子 mailto:sage [2019/03/06(水) 13:15:53.62 ID:7/fqDaVy.net] そうか。
695 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 23:36:07.84 ID:rIL6SiiZ.net] std::chronoにnanoseconds取り扱う型があるけど これってwindowsでもナノ秒の精度ちゃんと取り扱えるの?
696 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 23:39:51.80 ID:NglcYyrq.net] c++11以降はあれ明らかに生産性下がってんだろ。。 誰か本当のことを言ってやれよ。。
697 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 23:41:05.32 ID:ARyk7IvZ.net] 構造化束縛はありがたい
698 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 23:42:11.68 ID:TjQtzcPT.net] >>695 自分で試してみたら?
699 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 23:52:49.64 ID:07omsi5c.net] >>695 表現できるだけ 計測できるとは言っていない
700 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 04:25:32.55 ID:hEEon6In.net] じっさいにやったらわかるが、結局 Windows API の持ってる精度までしかでない あたりまえっちゃーあたりまえだが
701 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 05:42:28.93 ID:mVKClUMz.net] >>698 試そうと思ったらどう試すのがいいんだ?
702 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 06:28:12.40 ID:beHWBAJY.net] 短時間、というか連続で何度も時刻の値を入手して、 値の下の方の桁がかならずゼロ並びになってるとか、 時刻同士の差を取って、ある値より小さな数が出ないことから、 解像度の見当を付けるくらいかな。 もっと良いやり方を知ってる人は教えてください。
703 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 09:17:09.23 ID:0XBNAuOg.net] 差をとってその偏差を見ればいいんでは 高解像度タイマーならたぶんcpuのクロック程度の解像度じゃないの パフォーマンス測定に普通使うし 個人的にはchrono使わずにosのapiかコンパイラの組み込み関数使う そっちの方が信頼できるし、chronoは型がガチガチすぎて面倒くさい
704 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 09:44:34.06 ID:MJ46GSxE.net] アナログ出力してオシロで確認
705 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 19:42:23.39 ID:41TL6wBf.net] std::vectorの最初の要素数は std::vectro<foo> bar(12); みたいにコンストラクタで指定できますが、同様に std::vector<std::vectro<foo>> bar のように入れ子になったvectorの両方の要素数をコンストラクタで指定する方法はありますか?
706 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 20:10:03.40 ID:rioBJ/QG.net] 結構難しいと思うがね。 最近のCPUはターボブーストいうてサボるし、命令順序入れ替えるし、キャッシュの乗り方でnano秒程度は簡単にズレるだろうし。
707 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 20:45:12.44 ID:xMxnKQAI.net] >>705 std::vector<std::vector<foo>> a(100, std::vector<foo>(200));
708 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 20:50:20.24 ID:pnI3L7PU.net] >>706 最近のは対策入ってる
709 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 22:54:09.91 ID:qMT9Q04c.net] >>707 ありがとござます!
710 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 07:43:53.39 ID:L5yO1DTL.net] Cで書かれたライブラリから来た構造体にスマポをあてる方法はありますか?
711 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 09:00:25.13 ID:jz9xUaFa.net] どうなんだろ? 普通に考えたらデストラクタでfreeを呼べばいいから、それ用のライブラリがありそうな気はするけど。
712 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 10:46:03.96 ID:ABNsWlsO.net] >>710 スマポ弄ってアロケートだけしないようにすればいいんじゃね?
713 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 11:36:20.07 ID:4ewQpv+T.net] 「来た」というのが構造体へのポインタをfree責任ごと渡されたという意味ならカスタムデリータだろうな。
714 名前:706 mailto:sage [2019/03/09(土) 12:16:02.29 ID:L5yO1DTL.net] ありがとうございます カスタムデリータは知りませんでした Cで書かれたライブラリにmallocしたポインタを返してくる関数があって生ポいやだなあと思っていたところでした
715 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 14:06:24.90 ID:YAm1zwse.net] 最近スマポ使えスマポ使えってうるさい割にはカスタムデリータ指定出来ることも知らなかったりするんだな 自分が使ってるもののリファレンスすら読んでない奴が安全性とかどの口で言ってるんだろう
716 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 15:07:55.58 ID:23Hi4jvz.net] わかってない奴ほど、声がデガイんだよ。
717 名前:デフォルトの名無しさん [2019/03/09(土) 17:13:56.74 ID:kfZA3URW.net] codecvt_utf8 codecvt_utf16 codecvt_utf8_utf16 こいつらの糞加減に
718 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 17:33:22.12 ID:anJ4ej+i.net] 最近カスタムデリータ知ったから嬉しがってる奴がいるなw
719 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 17:49:56.48 ID:23Hi4jvz.net] >>715 すいませんね、リファレンスなんかそっちのけで、ネット情報だけで、プログラム組んでます。
720 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:59:53.92 ID:YAm1zwse.net] >>718 図星だったか、すまんな というかマウント取るための屁理屈考えてる暇あったら手動かした方がいいよ
721 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:10:27.73 ID:eJu7ZZw8.net] 図星しとか意味分からん ひょっとして>>715 disってるのか? w
722 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:14:07.94 ID:9vZTtl18.net] 最近図星って言葉を覚えたので使いたいんだろう 察してやれ
723 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:21:16.84 ID:YAm1zwse.net] >>715 で言ったことが図星だったか?という意味なんだが アホが多いインターネッツですね
724 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:32:45.58 ID:kU0Uws1z.net] 今度はインターネッツという言葉を覚えたのか どんどん賢くなっていくな
725 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:39:00.33 ID:ABNsWlsO.net] カスタムデリータごときでよくそこまでドヤれるもんだなw
726 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 20:46:58.79 ID:YAm1zwse.net] それ俺に言ってんの?w
727 名前:デフォルトの名無しさん [2019/03/09(土) 21:23:16.03 ID:jx9iLAiD.net] そもそもSTLの基幹部分とかJavaだろ。
728 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 21:36:18.70 ID:jz9xUaFa.net] 実際c++やるやつのほとんどの動機がマウントとりたい以上のものではない。
729 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 22:31:55.52 ID:u5Pk3KZw.net] > 俺に言ってんの? 意識しまくりすぎだろw
730 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 22:41:21.04 ID:Tm/Y9JxW.net] 大学四年かけてC++と機械学習学べば年収1000万とか本気で言ってる奴らだからな()
731 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:26:31.27 ID:QlHozVZM.net] 相談なのですが テキスト形式のライセンスファイルへのファイルパスを渡さないと使用できないライブラリA そのライブラリAを使用するライブラリB 私が作成しているのはライブラリBです。お客さんに使ってもらうものなんですが、「ライセンスファイルをセットで提供して適切な場所に置いて使ってもらう」という手間を省きたくてライセンスファイルをライブラリBに埋め込めないかと思案しています。 とりあえずライセンスファイルの中身をソースにベタ書きし、実行時に一時ファイルとして作成しライブラリAにそのパスを渡すことで上手くいっているのですが、もっとスマートな方法はないでしょうか? ファイルパスを渡さないといけないので無理ですかね…
732 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:57:10.81 ID:9rO3q8tQ.net] 納入時にファイル一つなんか? 実体なんやねん
733 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:06:05.03 ID:zGphoT2G.net] ライブラリAが要求するのは ファイルシステムに認知されるファイルの形式でないといけない だから中間ファイルに書き出して、そのファイルパスを渡すしかない つかライセンスを埋め込んだ場合何がしかの事情で ライセンス変更の必要が迫られた場合ライブラリBを構築しなおすことになるんだが そういう管理でいいのけ?
734 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:06:05.25 ID:CMHDEYzk.net] >>732 ヘッダーと共有ライブラリのセットです。
735 名前:デフォルトの名無しさん mailto: sage [2019/03/11(月) 23:11:06.21 ID:CMHDEYzk.net] >>733 やっぱ他にないですよね… 継続的にバージョンアップ重ねて提供してるんですが、ライブラリAについては今後も使い続けるか微妙なんでお客さんに〜のように運用してくださいってお願いするのはまだやめておきたいんですよ。 まあその面倒ごとを避けようとするスタンスが一番よくないのかもしれませんね。
736 名前:デフォルトの名無しさん mailto: sage [2019/03/11(月) 23:14:01.28 ID:CMHDEYzk.net] というか自分がお客さんの立場にたってみれば、「カレントディレクトリにライセンスファイル置いて使ってください」と言われたら「はいOKです」ですむ問題ですよね。 やはりちゃんとライセンスファイル提供して使ってもらうべきかと思ってきました。
737 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:20:45.86 ID:9rO3q8tQ.net] >>734 どう配布すんのかしらんけど 共有ライブラリと同じとこに置いて固めるなり、インストーラー書くなりすれば十分やろ たいして報われん努力やと思うわ それよりライブラリAは何がしたいんか気になるわ 意味あんのかそれ
738 名前:デフォルトの名無しさん mailto: sage [2019/03/11(月) 23:23:05.53 ID:CMHDEYzk.net] >>737 ライブラリAはwebAPI叩くからその時にアクセス権限チェックでライセンスファイルを使うようです。
739 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:36:41.67 ID:9rO3q8tQ.net] >>736 ロードされてる共有ライブラリのパスはとれるはずやから、 そこにライセンスファイル置いておく手はある
740 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:51:07.02 ID:xlgLjh5J.net] 変数と型についてなんだがメモリは2進数でデータを記録していて、それを何byteで区切って、どういう意味を持つか(正の整数のみとか)を型で決めてるんだよね?だとしたらポインタに型があるのはなぜ?どれもアドレスを示すんだからある意味int型でいいと思うんだけど
741 名前:はちみつ餃子 mailto:sage [2019/03/12(火) 02:03:10.03 ID:tBEUjULM.net] >>740 そういう言語もあったよ。 でも、ポインタを経由しただけで型がわからなくなるんじゃ、 型システムが意味を成さないだろう。 元と違った型としてアクセスしようとしたときに、 型情報がなけりゃコンパイラが捕捉しようもない。 それはプログラマの責任で正しく扱うってのならそれでもいいし、 実際、 C/C++ はプログラマがやりたければポインタを整数に型変換することも出来るけど、 (言語仕様としてはほとんど保証はないが。) 人類は間違うのでな。 型が合わないエラーなんてたびたび出しちゃうもんだろ。 もし型がなければそれはスルーされてわけのわからない挙動をするプログラムになるんだぞ。 そういうのはもうやめようって話。
742 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 02:06:26.71 ID:i1gu3hXZ.net] >>740 ポインタに格納されるアドレス値は32bitとか64bitとかの整数でそれ自体は同じ型として扱えるとしても、そのポインタの指す先にある物の型が分からないと色々困るでしょ。 ポインタ型としてvoid*だけでプログラムを書こうとすればその必要性がわかるはず。 同じバイト表現だからといって同じ型で表さなければならない道理はない。用途や演算結果が異なるのだから別の型として扱うのはある意味自然なことだと思うよ。
743 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 07:03:19.32 ID:1t7NN+JI.net] >>740 参照はずし、つまり*演算子で「ポインタの指す内容」を取り出すときに そのポインタがどんなデータを指すポインタか分からないと困るでしょ。 構造体を指すポインタで p->menber とかする場合も同様。 >>742 の「void*ポインタだけ使って書いてみる」ってのは、 ポインタに型のある有り難さを実感できる良い課題だね。
744 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 07:35:06.24 ID:nPeHxcg9.net] Cのポインタ型はK&Rのプログラミング言語Cに書いてある通り、単なるアドレスを保持する型じゃなくて配列の仲間なのよ。 例えば char *cp =“abc”; で *(p+1)の様に書くと、ちゃんとcharサイズ分ずらしたアドレスを指してくれる。 その本には (当時の)優れたプログラマたちがやってた事を言語仕様として取り込んだと、という様な事が書いてあったと思う。 ポインタが示す先の型とサイズやらの心配はC言語では不要だ、すげーだろ?的な。
745 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 07:35:25.54 ID:nPeHxcg9.net] Cのポインタ型はK&Rのプログラミング言語Cに書いてある通り、単なるアドレスを保持する型じゃなくて配列の仲間なのよ。 例えば char *cp =“abc”; で *(p+1)の様に書くと、ちゃんとcharサイズ分ずらしたアドレスを指してくれる。 その本には (当時の)優れたプログラマたちがやってた事を言語仕様として取り込んだと、という様な事が書いてあったと思う。 ポインタが示す先の型とサイズやらの心配はC言語では不要だ、すげーだろ?的な。
746 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 07:37:59.58 ID:nPeHxcg9.net] >>745 >>745 >*(p+1)の様に書くと、ちゃんとcharサイズ分ずらしたアドレスを指してくれる。 *(cp+1)の間違い
747 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 08:23:28.38 ID:xHFKV8QO.net] >>741 >>742 >>743 >>744 ヒューマンエラー防止 型のないポインタを宣言すると中身のbyte長が不明 ってことかありがとう 740のコードを見て疑問に思ったんだけど*cpは一つのアドレスしか記録できないから配列の先頭(文字a)のアドレスを記録するよね。このとき配列の長さが3だという情報はどこにあるの?(脱線するけどNULL終端も数えて長さ4?)
748 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 08:29:27.03 ID:i1gu3hXZ.net] >>747 ポインタが指す先にいくつ分の領域があるか(いくつ分を参照してよいか)は記録されてないから、プログラマが自分の責任で管理するしかないよ
749 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 08:41:29.44 ID:7SPfMi3X.net] >>747 直接長さを示す情報はどこにもないよ だから、cの「文字列」は単なる文字の配列だけではなく、0終端が必要 >(脱線するけどNULL終端も数えて長さ4?) その通り (NULLはnullptrとしてのみ使ったほうがいいよ 混同してないならいいんだけどね)
750 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:29:32.99 ID:nPeHxcg9.net] >>744 >>745 >ポインタが示す先の型とサイズやらの心配はC言語では不要だ、すげーだろ?的な。 サイズって型のサイズでした、すみません。 配列長さは sizeof(*cp) / sizeof(型)で取ってねって書いてあったよね?
751 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:32:06.13 ID:u0RxZCyH.net] \0終端が来るまで確保されていると想定して受け取り側は動作する だから終端記号がないと色々まずい (ので、バッファ長も指示する関数が後から増えた)
752 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:32:15.05 ID:xVickGeK.net] 便乗質問でごめんやけど delete [] p; この場合deleteはどうやってサイズ調べてんの?
753 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:33:32.91 ID:i1gu3hXZ.net] >>750 char *cpで宣言してるならその計算じゃ配列サイズはとれないよ。
754 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:33:42.86 ID:u0RxZCyH.net] 要素数の算出は sizeof(配列) / sizeof(配列[0]) または sizeof(配列) / sizeof(*配列) ではなかろうか?
755 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 09:47:35.09 ID:Nd0ou12Q.net] 除算は遅いからなぁ
756 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 10:18:57.28 ID:u0RxZCyH.net] コンパイル時に確定する値だから 実行時には定数として埋まってるんでないの? (ほんとんどの環境で インタープリターはしらんw
757 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 10:22:41.05 ID:Nd0ou12Q.net] sizeof(配列)は動的でしょう
758 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:15:07.37 ID:7lezZ5hH.net] sizeofは演算子だから動的じゃないかな 最適化で消し飛ぶ可能性はあるのかもしれんけど
759 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:42:52.96 ID:Gedrqwi7.net] >>752 実装依存だと思うけど、p[-1]とかに長さが書いてあったりする
760 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 12:45:54.40 ID:xHFKV8QO.net] アンカー長くなるから省略するけど みなさんありがとう
761 名前:デフォルトの名無しさん [2019/03/12(火) 13:32:00.51 ID:6Uu2j9Xc.net] インクリメントするときに困る
762 名前:752 mailto:sage [2019/03/12(火) 14:52:24.67 ID:u0RxZCyH.net] VLAのこと完全に忘れてた sizeof(配列) は動的だわ
763 名前:はちみつ餃子 mailto:sage [2019/03/12(火) 15:09:12.69 ID:tBEUjULM.net] sizeof の結果は動的な判断が必要な場合 (いわゆる VLA) を除いて整数定数であることは保証される。 C++ には VLA は無いので sizeof が動的であるかどうかを心配する必要はないんだけど、 それは置いといて、 C++ で配列の大きさを知りたいときは std::extent の方がよくない?
764 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 15:29:35.28 ID:xWv5Y9zk.net] >>760 >>748-759 というアンカー表示方法も、知っておいてね。
765 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 22:48:56.35 ID:SU/8eF4+.net] 昔はstd::extent持ち出したりしたが今はstd::sizeだな
766 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:05:04.16 ID:/eUnUFro.net] uint8_t *addrb =(uint8_t *)0x00F00000; uint16_t *addrw =(uint16_t *)0x00F00000; *addrb = 0x10; *addrw = 0xF0F0; 0x00F00000番地に0x10と0xF0F0を書き込むコードらしいのですが、最初の2行がよく分かりません。アドレスが4バイトなのにポインタはそれより小さくて問題ないのでしょうか。右辺のキャストは何を行っているのでしょうか。 よろしくお願いします。
767 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:29:55.31 ID:RU0tEwI6.net] >>766 ・整数だから昇格するよ ・整数即値をポインタ型に変換してるよ ポイント先のデータは多分、バイト型だよ マップドIO系のCPUではよく見るパターンだね
768 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:37:26.58 ID:y5WX6T5u.net] >ポインタはそれより小さくて問題ないのでしょうか。 *addrb = 0x10; *addrw = 0xF0F0; この文を見て上の疑問に到達したのかな? ポインタは addrb や addrw で その変数の器の大きさはアドレスを格納できる大きさ *addrb で アドレスにさされた先の内容を示す 内容の大きさはその型による *addrb は uint8_t 型でおそらく1バイト (1オクテット) *addrw は uint16_t 型でおそらく2バイト (2オクテット)
769 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 18:31:26.55 ID:yPp5BeL1.net] ありがとうございます。 理解できました。 そもそもアドレス自身のサイズがあるものと勘違いしてました。
770 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 06:41:14.61 ID:SGfhnH0M.net] アドレス自身にもサイズはあるけどね。 sizeof(*addrb) == たぶん 1 (8bit) sizeof(*addrw) == たぶん 2 (16bit) sizeof(addrb) ... 近頃のPCでは 4 (32bitアドレス) か 8 (64bitアドレス) かのう。
771 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 12:20:30.31 ID:Yw9IVRaM.net] メモリ消費についてききたい。 8byteのa,b,cっていう変数と、それを結合した24byteのdっていう変数をクラス内で扱いたいんだけど、素直にやると48byteメモリ消費だよね? 代わりに24byteのdと、8byte型のポインタ(4byte)3つ宣言したら36byteのメモリ消費で12byte/オブジェクトの節約になると思うんだけど、最適化したければ意識するべき? あるいはコンパイラがその辺は上手にやってくれて最小限のメモリ消費になる?
772 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 12:26:16.05 ID:1+g2CCuw.net] >>771 ポインタ先をチェック・確保するのにヒープメモリーと計算コストが掛かる。
773 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 13:52:59.75 ID:M+miX7Aw.net] >>771 宣言次第ですね。 メモリ節約だとdを配列にしておくといいかなとおもいました。
774 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 14:39:59.26 ID:3EvgP48J.net] >>771 それ実体の24byteが別に要るだろ…
775 名前:デフォルトの名無しさん [2019/03/14(木) 14:43:45.46 ID:q8OuUl64.net] 下のソースをコンパイルしてコマンドプロンプト(cmd)で実行すると「鷗」の字が出力されません int main(int ac, char **av){ setlocale(LC_ALL, ""); fwprintf(stdout, L"[%c]\n", 0x3042); // [あ] と表示される fwprintf(stdout, L"[%c]\n", 0x9dd7); // [?] と表示される return 0; } 同じコマンドプロンプト(同じwindowsインスタンス上)で python3 からだと(スクリプト経由でもIDEでもどちらも) print(f'[{0x3042:c}]') # [あ] print(f'[{0x9dd7:c}]') # [鷗] 表示されます setlocale(LC_CTYPE, "en_US:utf8"); にしても同じでした python3 からだと表示出来るということは fwprintf に問題があるということでしょうか?
776 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 14:57:23.81 ID:tsxAqnNH.net] Windows は、Visual Studio だろ TCHAR マクロで、sjis/Unicode を切り替える。 Windows用の環境を揃えないと、無理だろ
777 名前:デフォルトの名無しさん [2019/03/14(木) 15:10:14.13 ID:q8OuUl64.net] UNICODE _UNICODE とかは定義してあります それに[あ]の方は表示されてるので TCHAR が char と誤認識とかめっちゃ的外れな指摘だと感じます
778 名前:デフォルトの名無しさん [2019/03/14(木) 15:25:54.72 ID:s2YvJJWc.net] fwprintf ワイド文字を書き込む場合、ファイルはバイナリー・モードでオープンするか、 o_ccsid または codepage パラメーターでオープンする必要があります。 これにより、ワイド文字に対して変換が発生しないことが保証されます。
779 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 17:04:07.47 ID:DMc/T5SW.net] >>771 もしかして windows で 24bitカラーを取り扱いたい話? union で楽する #pragma pack(push,1) typedef union { BYTE e[3]; struct { BYTE B, G, R; }; } BPP24_t; #pragma pack(pop)
780 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 19:02:32.98 ID:wP1B/x23.net] >>772-774 >>779 ありがとう説明不足だった 厳密にはL2フレームを実装したくて DMAC6byte SMAC6byte TYPE2byte とかを結合して送りたい。 んだが、結合用の変数を用意するとメモリ消費二倍な気がしていやだなと。 で、それぞれはポインタにして結合用の変数の0、6、8byteめを指定してやればいい気がして聞いてみた
781 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 19:26:19.44 ID:lcdumzgu.net] >>780 プロトコルスタックでそういうデザインはよくある nicにわたすときのdmaもそんな感じ しかしその数バイトの処理はこだわるところじゃない
782 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:21:10.72 ID:2vbDdJqi.net] 規格で標準ライブラリ中のメソッドがconst指定されていない場合これをconst指定するのは規格違反ですか? 具体的にはuniform_int_distributionのconstなインスタンスを生成してoperator()(URNG& g)を呼び出すとMSVC(VS2017)のみ通り、gcc4.3.2とclang4.0ではコンパイルエラーになりました N4140及びN4659を参照した限り、上記のオペレータはconst指定されていませんでした
783 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:28:14.30 ID:gIuDI0vP.net] >>780 フレームの組み立ては迷うことなくstructでいいと思うのですがどうでしょう。ちなみにpingではは素直にstructで組み立ててあります。
784 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:30:26.12 ID:V4l0GHvB.net] >>781 確かに数バイトなんだけどね >>783 cppで書いててクラスのプライベート変数として持ってます 結合どうするかだけ悩ましい
785 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 21:00:14.82 ID:gIuDI0vP.net] >>784 ああ、なるほど。structでガワ作っておいて、ペイロード書き換えてバッファに溜めていくって感じでしかやった事しかないですけどケースバイケースなんでしょうね。
786 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 21:58:48.11 ID:VY0DZD81.net] コンソールがSJISだから無理
787 名前:デフォルトの名無しさん [2019/03/14(木) 23:31:25.66 ID:u00Rfoqy.net] C++難しすぎねえか? こんなの新機能を網羅してる人どんだけいるんだか・・・
788 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:39:23.56 ID:CLlwPgIu.net] 奥義を究めると尊敬されます(カモ)
789 名前:はちみつ餃子 mailto:sage [2019/03/14(木) 23:47:20.81 ID:mXS2OKIJ.net] >>787 別に網羅せんでも使えるところだけ使えば良い。 常に新しい機能を把握しておく必要はない。 使わない方が良い機能というのは有るので、駄目な部分を把握する方が大事だと思う。 (その結果として新しい機能に行きつくこともあるけど。) 新しい機能を使わないと回りくどくなるだけだが、 駄目な機能は致命傷になる (という可能性をコンパイル時にエラーに出来ない) こともあるので。 今の C++ で nullptr でなく NULL を使う理由は全然ない、みたいなのとか。
790 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:49:54.51 ID:Gk3KilXE.net] てかコンセプトが待ち遠しい templateの黒魔術っぷりが大幅に改善されるよね エラーメッセージが分かりやすくなるのが大きい
791 名前:はちみつ餃子 mailto:sage [2019/03/15(金) 00:08:50.55 ID:q2a9nFaz.net] コンセプトとモジュールは C++er の悲願って感じだからな……。 今まで土壇場での延期を繰返した経緯を考えると次も本当に入るのか 疑わしい気はするけど。
792 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 02:19:09.67 ID:f+LcC8HT.net] 配列のアドレスが表示できません。何が悪いのでしょうか。結果はからになります。 unsigned char a[100]; cout << hex << &a[5] << endl;
793 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 02:52:40.51 ID:nvk7uoI+.net] a+5
794 名前:さまよえる蟻人間 mailto:age [2019/03/15(金) 04:49:34.55 ID:CgPhXsZt.net] (void *)
795 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 06:53:21.47 ID:F3jqlZHF.net] >>792 &a[5] は「unsigned char を指すポインタ」なので cout << では「'\0'で終端する文字列」として表示しようとするのよ。 なもんで >>794 の通り void* にキャストして、 具体的なデータを指さない「単なるアドレス」扱いしてくれと指示。 ちなみに >>793 は効果ないでしょ。 でも C++ の作法としては static_cast<void*>(&a[5]) と 長々しい名前付きキャストを使うべきなんじゃろか。 個人的には static_cast<const void*>(&a[5]) まで書きたいけど。 inline const void *to_voidptr(const void* p) {return p;} てな具合に、字数を減らすための変換用の関数でも使うか。 …何か標準的で短い書き方があったりするのかしら。
796 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 08:07:08.74 ID:fLDhqMRG.net] 文字はcharだけでsigned/unsignedは整数扱いするとかしてくれりゃよかったのにな。
797 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 09:38:53.54 ID:MV2geWC9.net] coutなんて使うのが悪い printf()でおk
798 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 10:50:58.56 ID:nvk7uoI+.net] qDebugばっか使ってたからcoutの使い方なんて忘れてたわw
799 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 06:21:33.06 ID:Q6jWm6hE.net] そういえば「cout << &a[5] でアドレス値が表示されない」ってのは char 系の配列やポインタの場合だけで起きる特殊例なのかな。 ユーザーが operator<<(ostream&, T*) の再定義をしない標準の状態で、 オブジェクトのアドレス値を送ったらアドレス値以外の何かが表示される型って 標準か有名どころのライブラリで、何か知ってる?
800 名前:デフォルトの名無しさん [2019/03/17(日) 12:02:02.30 ID:ZVJiTVd1.net] operator<<(ostream&, T*) の再定義をしないライブラリで オブジェクトのアドレス値を送ったらアドレス値以外の何かが表示される型を定義しているものは? という質問に置き換えてみた
801 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 13:17:40.49 ID:4LIjOkKH.net] gccのiostreamのソース辿れば全部書いてあるよ。
802 名前: mailto:sage [2019/03/17(日) 14:11:06.99 ID:8PHb1ymW.net] >>801 ほう、どこに書いているのかわかってそう言っているのですね、それはすごいですね
803 名前:デフォルトの名無しさん [2019/03/17(日) 14:22:23.04 ID:rD0zueCH.net] https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/ostream
804 名前:はちみつ餃子 mailto:sage [2019/03/17(日) 14:50:03.46 ID:aA4z/LNt.net] ライブラリのソースコードを辿っていくとビルトイン関数だったりして萎えることもあるので、 まずは仕様をちゃんと読もうな。
805 名前:795 mailto:sage [2019/03/17(日) 15:05:24.52 ID:Q6jWm6hE.net] >>803 ostream のヘッダ単独は意外に分量少なくて一通り見られたよ。 char系以外には... operator<<(nullptr_t); // #if __cplusplus >= 201703L で条件コンパイル operator<<(__streambuf_type* __sb); があるみたい。本当にこれだけか確実ではないけど。 nullptr_t の方は「nullptr が送り込まれたら "nullptr" と表示しろ」だと思うが __streambuf_type* __sb は分からん(定義は別ファイル、みたいだし)。
806 名前:デフォルトの名無しさん [2019/03/17(日) 15:17:33.67 ID:9G7IgbIM.net] 痛レータが呼ばれるんじゃね
807 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 19:25:05.63 ID:wQNvtjPu.net] 現在アルゴリズムの勉強をしています ソートアルゴリズムで有名な基本挿入法で与えた5つの整数を小さい順に並べるプログラムがうまく動きません 基本選択法、基本交換法(バブルソート)は書けるのですが… ソートアルゴリズム、アルゴリズムそのものは図で正しく書けるとは思うのですが、コードに落とし込むのがうまくいきません 書いたコードは稚拙ですが以下のものです おかしな点を教えてくだされば幸いです #include<stdio.h> //基本挿入法 int main(void){ int temp=0,j,i; int ary[5]={9,6,1,5,2}; for(i=1;i<=4;i++){ temp=ary[i]; for(j=i-1;j>=0;j--){ if(ary[j]>ary[i]){ puts("aaa"); ary[j+1]=ary[j]; }else{ puts("jais"); j--; break; } } j++; ary[j]=temp; printf("a[%d]は%d a[%d]は%d¥n",j,ary[j],i,ary[i]); } for(i=0;i<=4;i++){ printf("%d¥n",ary[i]); } return 0; }
808 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 19:26:08.56 ID:wQNvtjPu.net] puts(“aaa”)やputs(“jais”)はprintf(“a[%d]は%d 〜”)の3つは、プリントデバグのために書いたものです…消し忘れました すみません
809 名前: mailto:sage [2019/03/17(日) 21:48:00.62 ID:8PHb1ymW.net] >>807 https://ideone.com/gIcJzp 納得がいくまで printf() を仕掛けるのはいいことだと思います。
810 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 21:33:07.89 ID:iIi946R+.net] class C { public: void f(){} }; C* pc= new C; pc.f(); コンパイルエラーが出るってことは、コンパイラはpcがポインタであることを 知ってる なのになぜ、->と記述させるの?
811 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 21:44:58.77 ID:32G7a9z6.net] std::invoke使え
812 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 21:52:40.40 ID:7SOsx0TI.net] ClassAのメンバにClassBがあってコンストラクタかsetterで外部から与えたいんだけど、 ClassBが大きくてできるだけコピーしたくない場合はどうするのがベストですか? コピーコンストラクタが呼ばれた場合に初めてコピーされるようにしたいです unique_ptr<ClassB>型にするとスコープを外れるときに落ちました Class ClassA{ public: ClassA(ClassB &b) { m_b.reset(&b); }; ClassA(const ClassA a) : m_b(new ClassB(a.m_b)){}; ・・・ private: unique_ptr<ClassB> m_b; } main(){ ・・・ { ClassB b; ClassA a(b); } // ここで落ちる ・・・ }
813 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:09:12.99 ID:oZ4uWA1m.net] > m_b.reset(&b); ヒープオブジェクトじゃないものをunique_ptrに突っ込んだらダメ。 カスタムデリータ用意するなら別だけど。
814 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:22:19.12 ID:7SOsx0TI.net] >>813 この場合にスマートポインタは違うようですね メンバは実体にして渡すときにムーブすればコピーは発生しないという認識は正しいですか?
815 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:30:43.95 ID:0T+gZcjq.net] ClassAはClassBそのものを所有するのか それとも外部のClassBへの参照を保持するだけなのか? そのものを所有するなら外部から与えるのではなく ClassAの中でClassBを構築するのも検討してみれば // ClassAのコンストラクタ // 11以降ならムーブとかも ClassA(ClassBの構築に使う引数) : m_b(前記の引数) {}
816 名前:さまよえる蟻人間 mailto:sage [2019/04/01(月) 22:30:51.94 ID:OIWsA4Np.net] >>814 スマホ使う前にオブジェクトの所有権を明確にせよ。
817 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:51:52.32 ID:7SOsx0TI.net] ClassBの構築に使う引数も大きいためコピーを避けたいところです 基本的には参照を保持するだけにしたいところですが、ClassBがスコープを外れて破棄される場面ではClassAに実体をコピーできるようにしたいです
818 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:59:26.12 ID:oZ4uWA1m.net] なんでそこでわざわざコピーしたいの? 最初からnewでヒープに確保すりゃコピー必要ないのに。
819 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 23:35:23.75 ID:32G7a9z6.net] AにB*とunique_ptr<B>を作って AがBを使うときは常にB*経由でアクセス Bを所有させたいときだけunique_ptrにヒープ管理だけさせる
820 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 23:37:44.29 ID:7SOsx0TI.net] 2つ持つという発想はありませんでした 試してみます
821 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 17:56:45.10 ID:4dlKQxP/.net] 昔、openGLを使ってC++出遊んでたんですけど、また最近触りたくなりました 皆さんC++で何作ってますか? 個人開発規模でお願いします
822 名前: mailto:sage [2019/04/04(木) 19:24:27.16 ID:+9gozOKQ.net] >>821 昔作ったツールがひょんなことで役立っています… あるディレクトリを別のドライブにコピーするだけのことなんですが、いや、まあ、Windows はなかなか御しがたく、path 文字列長が一定範囲を超過すると止まってしまう変てこなコマンドラインツールが未だに現役だったりするのです… https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
823 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:14:39.57 ID:vPLFSwkc.net] >>822 システムコールってやつですか? オブジェクト指向と並列処理を勉強したいと思ってるのでQtもいいかなと思ってます どうでしょうか?
824 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 20:22:00.68 ID:USs/shwk.net] Qtのデメリットはライセンスだけだから個人でやる分には良い選択
825 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 11:39:32.60 ID:K5RuTlhq.net] オブジェクト指向を学ぶのにRubyあたりを使うのは どういうデメリットが? Pythonは「バージョン違いによる仕様変更」に 入門書レベルのコードが影響されるのであれば「良い選択とは言えない」ことになりそーだけど
826 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 12:37:54.42 ID:oOSdboOz.net] >>825 せっかく新しい言語を学ぶなら、近い将来役に立たなくなる言語より他の役に立つ言語を選んだ方が合理的だと思う
827 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 13:47:38.12 ID:+CDO09PL.net] pythonて破壊的な変更があったのは20年近く前なのに、未だに古い仕様で書かれた入門書が出回っているなら、オブジェクト指向学習に最適化どうかとは別に、問題な気が。
828 名前:デフォルトの名無しさん [2019/04/12(金) 14:05:10.56 ID:VR9mZ4dF.net] rubyは古い言語
829 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 14:50:54.53 ID:K5RuTlhq.net] Qt5.12.2はLGPLライセンスでインストールしとけばok? 他のライセンスは初見
830 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 14:56:36.82 ID:rTBxcnf6.net] 追加パッケージを使わないのならLGPLでおk
831 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 15:06:17.42 ID:K5RuTlhq.net] "Qt Creator 4.8.2 CDB Debugg..." と "MinGW 7.3.0" 64-bit" 入れたら Hello World の窓が表示できるようになったけど、 練習ならそんなかんじでok?
832 名前:デフォルトの名無しさん [2019/04/12(金) 15:28:10.39 ID:VR9mZ4dF.net] しばらく正常に動いてるように観えてても あとで問題が顕在化して困るパターン
833 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 15:38:10.46 ID:K5RuTlhq.net] どのような問題が発生しうるのでしょう? もっぱら個人用の練習用とする予定
834 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 15:54:14.03 ID:rTBxcnf6.net] Qt始めるならとりあえずこのシリーズ読もう https://blog.qt.io/jp/category/getting-started-with-qt/
835 名前:デフォルトの名無しさん mailto:sage [2019/04/12(金) 17:06:12.27 ID:K5RuTlhq.net] 私の場合は、インストール〜 "Hello World" については https://qiita.com/yasumodev/items/399ec89b7205e3c0bab1 https://qiita.com/yasumodev/items/104446261114e9a7352c を参考にしました。続きについては、御提示のリンク先を試してみますね
836 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 12:09:38.16 ID:r7SUy1hn.net] ID:K5RuTlhq です >>830 https://www3.sra.co.jp/qt/licence/index.html を見て『グラフ作成パッケージQt Charts入れておいた方が便利かも』と思い いったんアンインストールしてみたのですが、 [Qt 5.12.2 のセットアップ] の画面で Qt Charts Qt Data Visualization Qt purchasing Qt Virtual Keyboard Qt WebEngine Qt Network Authrozation Qt WebGL Streming Plugin にチェックを入れたとしても LGPL が選べるようです サードパーティーの追加パッケージで問題となりうる…?
837 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 12:11:50.81 ID:r7SUy1hn.net] >>832 具体的に「どのような問題が顕在化」し「どのように困る」ことになるのでしょうか クラスとメンバ関数のみの指摘でも構わないので、示していただけませんか? また、その問題を回避する方法は何なのでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 13:57:08.11 ID:TvmgiEsJ.net] >>836 LGPLを選べたとしてもQt Chartsを使っていればGPLv3 GPLと非互換のライセンスのライブラリを使うなら問題になる だがそもそも練習段階ならライセンスなど気にせずどんどん書け
839 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 20:47:38.59 ID:r7SUy1hn.net] 昔は知らんが5.12.1ならQt ChartsはLGPLで許諾されるよ?
840 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 20:48:56.62 ID:r7SUy1hn.net] 5.12.2だった
841 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 23:19:58.42 ID:TvmgiEsJ.net] はっきりとGPLv3と書かれてる https://www.qt.io/download Open Source->Additional features->Data visualization の?を参照
842 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 00:04:08.34 ID:El+pt49w.net] 条項はこれから確認する >>841 インストールの操作手順からしたら 不意打ちも良いとこだなあ Qt Charts をチェックした状態で[次へ(N)]ボタンを押したときに 「修正を受けたGPLv3」以外のラジオボタンが無効になってないと UIとしておかしくねえか あと「100%GPLv3と一致で修正条項なし」なん? そうだとしたら、なおさらおかしい
843 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 00:07:28.45 ID:El+pt49w.net] そういえば LICENSE などと大文字ファイル名にしないと効力が発生しないとする「糞判例がある」と聞いたことがあるけど、日本の裁判所? ググっただけでは見つからなかった 最高裁判例なら検索結果の判決文をPDFで読める訳だがなあ そのようなケースを敷衍すると、帰結として、Qt chartsはLGPLとなりうる GPLv3 については逐条解説もあるから、そっちの内容も確認してみてちょ(あくまで「解説」)
844 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 00:54:57.43 ID:El+pt49w.net] 純粋に「Qt のライセンス」の話なのでスレチ? copyright notice の表示方法の適切性について、GPLv3って基本的には明確には記載してなくね ただし今回のケースだと、「インストーラが LGPL によるライセンスを表示した状態」で先に進める以上 0. Definitions. の第8パラグラフ(1) 反対解釈により、「GPLv3は適用されない」と読む余地がある 実際、GPLv3 につき "displays an appropriate copyright notice" してないもの
845 名前:デフォルトの名無しさん mailto:sage [2019/04/14(日) 00:56:08.63 ID:El+pt49w.net] 書き込み制限受けたので続き。多分コレで終わり。 あのインストーラが表示している著作権表示は明確に LGPL だから適用条件満たしてないと解釈する余地がある、と …わたしはただの学習者だから大騒ぎすることでもねえんだがねえ…
846 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 21:39:53.28 ID:L7qqGgg7.net] int& a; int &a; どっちにすべきでしょうか
847 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 21:52:39.66 ID:zTAvdEPs.net] 好きな方で書け
848 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 21:56:00.71 ID:dimPC8Ge.net] 「すべき」というのは規格表での『shall』のことですか? それとももっと別の意図がありますか?
849 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 22:02:16.06 ID:1nT5zSFt.net] int & a; int * b;
850 名前:はちみつ餃子 mailto:sage [2019/04/15(月) 23:26:36.86 ID:94OTneyx.net] std::add_lvalue_reference<int>::type a;
851 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 07:00:13.97 ID:xjyBK9QH.net] そんなこと気にする前に参照の変数を未初期化で使おうとするなよ。 みたいなツッコミを入れたくなるけど、コンパイル時にエラーが出る 間違いは必ず見落としなく直せるから実際は大きな問題じゃないよね。 「ポインタ宣言の * を型名に寄せるか変数名に寄せるか」と同じで 一貫した書き方をするかぎり、どっちでも構わんでしょ。 個人的には「変数名に寄せる」派だけど。
852 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 08:18:02.67 ID:hl7GJiol.net] int& a, &b; int &a, &b; 自分も後者の方がいい
853 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 08:20:49.86 ID:GDkTCt4E.net] >>851 > 未初期化で使 コレの解釈は揺れそうだが、たとえば int *i; とか、 int *i; int j; i = &j; とかいうかんじのことかしらん
854 名前:デフォルトの名無しさん [2019/04/16(火) 11:22:25.45 ID:vZl8q5zB.net] >>852 +1 ほんそれ
855 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 12:24:17.44 ID:uqcfe1Iw.net] わからない事をここで質問しようとレスを書いてる最中に「わかった!」 ってなることが多々あるんだが、この謎の現象は何なんだ・・・
856 名前:デフォルトの名無しさん [2019/04/16(火) 12:28:15.56 ID:4RjIOnLA.net] 自己解決パターン 質問するときに頭の中が整理される→解決 質問するために再現する必要最小限のコードを書く→問題の切り分けが出来る→解決 いろいろあるが
857 名前:はちみつ餃子 mailto:sage [2019/04/16(火) 13:21:34.50 ID:XnNfa6Fy.net] >>855 何が駄目なのかわかれば解決法は自明であることが多い。 逆に言えば、解決法がわからないときは問題が何であるかわかってなかったりするんだよ。 だから、きちんとした形に質問をまとめれたなら、それはもうほとんど解答でもあるんだ。 この手法を利用してバグを取り除くやり方としてラバーダックデバッギングというものが知られている。
858 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 13:51:09.84 ID:WfxisTJA.net] C++erならRust学べって風潮嫌い なんで学習コストがある言語を2つも学ばないといけないのかと思うし
859 名前:847 [2019/04/16(火) 17:31:42.92 ID:xjyBK9QH.net] >>853 あんまり大それた意見とではなくて void func() { int &a; ... } と宣言したら、参照先不明の &a を作ろうとしてるから 必ずコンパイルエラーになるじゃろ、程度の指摘。 …ただ、この投稿を書こうとして気がついたんだけど、 class samp { int &a; ... }; てな具合に、クラスのメンバとしての宣言ならエラーにならないね。 ちゃんとコンストラクタで a に参照先を与えるなら許される。 要するに >>851 の前半部分は間違ってた、ということ。 正しい場合もあるけど、常に正しいわけじゃない。
860 名前:デフォルトの名無しさん [2019/04/16(火) 17:55:46.56 ID:LqBdGBd1.net] その場合でもコンストラクタで初期化してなかったらエラー出るんだから 説明自体は間違ってない
861 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 21:38:13.69 ID:5Rly8M3u.net] >>857 テディベアをおいておくというエピソードなら有名だね
862 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 22:14:36.94 ID:dFuxCqAG.net] >>858 難しいことも違った方向から見るとわかりやすくなることもある。
863 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 11:24:45.99 ID:qKKG75KJ.net] 質問です。 cinの戻り値のistream&がなんでif(cin)みたいに真偽判定に使えるのかが発端です。 https://stackoverflow.com/questions/8117566/why-istream-object-can-be-used-as-a-bool-expression こことか見たんですけど、 1.istreamはbasic_iosを継承してて、 2.basic_iosで型変換演算子explicit operator bool() const;が定義されてる ってとこまでは理解しました ここからが質問なんですけどこの型変換ってのは勝手に行われるもんなんですかね if(something)って書いたらif(bool(something))っていつもやってるんでしょうか
864 名前:デフォルトの名無しさん [2019/04/19(金) 11:40:22.57 ID:ymX8VCBl.net] intで参照したらEOF
865 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 12:05:08.07 ID:r9r2BfdP.net] 型変換以前に0やnullポインタを評価するとfalse、0以外の値はtrueと評価されると決まっているからだろ。 あと暗黙の型変換はよく起こる。
866 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 12:08:35.86 ID:lgg24wim.net] if 文の条件判定部は bool 型を要求してる前提で解釈,翻訳してるんじゃない
867 名前:はちみつ餃子 mailto:sage [2019/04/19(金) 12:13:29.89 ID:mypEidUJ.net] >>863 yes. 条件部はブールを要求し、もしブールでない場合は常に型変換する。
868 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:49:03.76 ID:9bTTnEnG.net] 前橋和弥さんのC言語ポインタ完全制覇という本で、 PCの環境(CPUの種類など)によってデータのメモリ上の配置は異なる (構造体のパディングをはじめ、ただの単体のintでさえバイトオーダーが異なる(ワークステーションではビッグエンディアン採用だったりする)) ので、メモリの内容をバイナリでディスク上のファイルに出力したデータは別環境で読み込んで使おうと思ってはいけない というような事が書いてありましたが、この話はWindows以外の環境や古い環境を前提とした話なのでしょうか? 同書にWindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてあるので、 Windows環境ならゲームのセーブデータとしてクラスをまるごとfwriteでバイナリ出力したファイルを別PCでロードしても問題ないのでしょうか? (Xeonとかワークステーションマザーとか関係なしに、IntelCPU&Windowsの環境ならばリトルエンディアンで統一されている?) (Macではビッグエンディアンになるが、Windows環境のみ対応のゲームを作る上では無視してよい?) という認識は間違っているでしょうか? パディングの違いなどもWindowsやVisualStudioが自動で良きに計らってくれるのならありがたいのですが…
869 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 09:54:32.44 ID:gSzU4BUh.net] windows間だから「別環境」ではなく「同じ環境」 だからwindowsでも同じ そのbmpデータをmacに持って行っても使えない なので磁気コアをダンプして永続化したようなデータは、他の全ての環境で使えない 60年代くらいから知られている
870 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:00:13.06 ID:9bTTnEnG.net] >>869 Windows環境であれば、別PC(別ハード)でも同環境とみなして良いのですね >>WindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてある 読み直したら、違ってましたm(_ _)m 可変長構造体の節で、 WindowsではBMPをfwriteなどで可変長構造体まるごとダンプしていて、 BMPのような他の環境にもっていく可能性が高いファイルを構造体まるごとダンプしているのがWindowsらしい というような内容でした Windows級の一流プログラマーでも構造体まるごと出力を使っているのであれば、 ゲームのセーブデータで構造体やクラスをまるごとバイナリ出力しても問題ないととらえてよいのかな?
871 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:30:10.75 ID:4KhiFNHT.net] >>870 bmpファイルには仕様があるので「Windowsのプログラマがどうたら」なんぞ関係無く仕様に従って読み書きすべし (現実には仕様に従わない入出力をやらかすアプリ毎に対処することはあるが) 自分で定義した構造体でも外部に公開するなら仕様を決めそれに準ずるべし 公開しないならそれこそ構造体丸ごとダンプなり好きにすれば良い 実際にそういう実装は珍しいものじゃない どうせ環境の変化で困るとしてもそれは自分だけだからね