エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
レス数が900を超えています。1000を超えると表示できなくなるよ。
2018/12/28(金) 06:04:52.38ID:ufThBpcD
>>817
昔作ったツールがひょんなことで役立っています…
あるディレクトリを別のドライブにコピーするだけのことなんですが、いや、まあ、Windows はなかなか御しがたく、path 文字列長が一定範囲を超過すると止まってしまう変てこなコマンドラインツールが未だに現役だったりするのです…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
昔作ったツールがひょんなことで役立っています…
あるディレクトリを別のドライブにコピーするだけのことなんですが、いや、まあ、Windows はなかなか御しがたく、path 文字列長が一定範囲を超過すると止まってしまう変てこなコマンドラインツールが未だに現役だったりするのです…
https://mevius.5ch.net/test/read.cgi/tech/1434079972/53
819デフォルトの名無しさん
2019/04/04(木) 20:14:39.57ID:vPLFSwkc820デフォルトの名無しさん
2019/04/04(木) 20:22:00.68ID:USs/shwk Qtのデメリットはライセンスだけだから個人でやる分には良い選択
821デフォルトの名無しさん
2019/04/12(金) 11:39:32.60ID:K5RuTlhq オブジェクト指向を学ぶのにRubyあたりを使うのは
どういうデメリットが?
Pythonは「バージョン違いによる仕様変更」に
入門書レベルのコードが影響されるのであれば「良い選択とは言えない」ことになりそーだけど
どういうデメリットが?
Pythonは「バージョン違いによる仕様変更」に
入門書レベルのコードが影響されるのであれば「良い選択とは言えない」ことになりそーだけど
822デフォルトの名無しさん
2019/04/12(金) 12:37:54.42ID:oOSdboOz >>821
せっかく新しい言語を学ぶなら、近い将来役に立たなくなる言語より他の役に立つ言語を選んだ方が合理的だと思う
せっかく新しい言語を学ぶなら、近い将来役に立たなくなる言語より他の役に立つ言語を選んだ方が合理的だと思う
823デフォルトの名無しさん
2019/04/12(金) 13:47:38.12ID:+CDO09PL pythonて破壊的な変更があったのは20年近く前なのに、未だに古い仕様で書かれた入門書が出回っているなら、オブジェクト指向学習に最適化どうかとは別に、問題な気が。
824デフォルトの名無しさん
2019/04/12(金) 14:05:10.56ID:VR9mZ4dF rubyは古い言語
825デフォルトの名無しさん
2019/04/12(金) 14:50:54.53ID:K5RuTlhq Qt5.12.2はLGPLライセンスでインストールしとけばok?
他のライセンスは初見
他のライセンスは初見
826デフォルトの名無しさん
2019/04/12(金) 14:56:36.82ID:rTBxcnf6 追加パッケージを使わないのならLGPLでおk
827デフォルトの名無しさん
2019/04/12(金) 15:06:17.42ID:K5RuTlhq "Qt Creator 4.8.2 CDB Debugg..." と "MinGW 7.3.0" 64-bit" 入れたら Hello World の窓が表示できるようになったけど、
練習ならそんなかんじでok?
練習ならそんなかんじでok?
828デフォルトの名無しさん
2019/04/12(金) 15:28:10.39ID:VR9mZ4dF しばらく正常に動いてるように観えてても
あとで問題が顕在化して困るパターン
あとで問題が顕在化して困るパターン
829デフォルトの名無しさん
2019/04/12(金) 15:38:10.46ID:K5RuTlhq どのような問題が発生しうるのでしょう?
もっぱら個人用の練習用とする予定
もっぱら個人用の練習用とする予定
830デフォルトの名無しさん
2019/04/12(金) 15:54:14.03ID:rTBxcnf6 Qt始めるならとりあえずこのシリーズ読もう
https://blog.qt.io/jp/category/getting-started-with-qt/
https://blog.qt.io/jp/category/getting-started-with-qt/
831デフォルトの名無しさん
2019/04/12(金) 17:06:12.27ID:K5RuTlhq 私の場合は、インストール〜 "Hello World" については
https://qiita.com/yasumodev/items/399ec89b7205e3c0bab1
https://qiita.com/yasumodev/items/104446261114e9a7352c
を参考にしました。続きについては、御提示のリンク先を試してみますね
https://qiita.com/yasumodev/items/399ec89b7205e3c0bab1
https://qiita.com/yasumodev/items/104446261114e9a7352c
を参考にしました。続きについては、御提示のリンク先を試してみますね
832デフォルトの名無しさん
2019/04/13(土) 12:09:38.16ID:r7SUy1hn ID:K5RuTlhq です
>>826
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 が選べるようです
サードパーティーの追加パッケージで問題となりうる…?
>>826
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 が選べるようです
サードパーティーの追加パッケージで問題となりうる…?
833デフォルトの名無しさん
2019/04/13(土) 12:11:50.81ID:r7SUy1hn >>828
具体的に「どのような問題が顕在化」し「どのように困る」ことになるのでしょうか
クラスとメンバ関数のみの指摘でも構わないので、示していただけませんか?
また、その問題を回避する方法は何なのでしょうか?
具体的に「どのような問題が顕在化」し「どのように困る」ことになるのでしょうか
クラスとメンバ関数のみの指摘でも構わないので、示していただけませんか?
また、その問題を回避する方法は何なのでしょうか?
834デフォルトの名無しさん
2019/04/13(土) 13:57:08.11ID:TvmgiEsJ835デフォルトの名無しさん
2019/04/13(土) 20:47:38.59ID:r7SUy1hn 昔は知らんが5.12.1ならQt ChartsはLGPLで許諾されるよ?
836デフォルトの名無しさん
2019/04/13(土) 20:48:56.62ID:r7SUy1hn 5.12.2だった
837デフォルトの名無しさん
2019/04/13(土) 23:19:58.42ID:TvmgiEsJ はっきりとGPLv3と書かれてる
https://www.qt.io/download
Open Source->Additional features->Data visualization の?を参照
https://www.qt.io/download
Open Source->Additional features->Data visualization の?を参照
838デフォルトの名無しさん
2019/04/14(日) 00:04:08.34ID:El+pt49w 条項はこれから確認する
>>837
インストールの操作手順からしたら
不意打ちも良いとこだなあ
Qt Charts をチェックした状態で[次へ(N)]ボタンを押したときに
「修正を受けたGPLv3」以外のラジオボタンが無効になってないと
UIとしておかしくねえか
あと「100%GPLv3と一致で修正条項なし」なん?
そうだとしたら、なおさらおかしい
>>837
インストールの操作手順からしたら
不意打ちも良いとこだなあ
Qt Charts をチェックした状態で[次へ(N)]ボタンを押したときに
「修正を受けたGPLv3」以外のラジオボタンが無効になってないと
UIとしておかしくねえか
あと「100%GPLv3と一致で修正条項なし」なん?
そうだとしたら、なおさらおかしい
839デフォルトの名無しさん
2019/04/14(日) 00:07:28.45ID:El+pt49w そういえば
LICENSE
などと大文字ファイル名にしないと効力が発生しないとする「糞判例がある」と聞いたことがあるけど、日本の裁判所?
ググっただけでは見つからなかった
最高裁判例なら検索結果の判決文をPDFで読める訳だがなあ
そのようなケースを敷衍すると、帰結として、Qt chartsはLGPLとなりうる
GPLv3 については逐条解説もあるから、そっちの内容も確認してみてちょ(あくまで「解説」)
LICENSE
などと大文字ファイル名にしないと効力が発生しないとする「糞判例がある」と聞いたことがあるけど、日本の裁判所?
ググっただけでは見つからなかった
最高裁判例なら検索結果の判決文をPDFで読める訳だがなあ
そのようなケースを敷衍すると、帰結として、Qt chartsはLGPLとなりうる
GPLv3 については逐条解説もあるから、そっちの内容も確認してみてちょ(あくまで「解説」)
840デフォルトの名無しさん
2019/04/14(日) 00:54:57.43ID:El+pt49w 純粋に「Qt のライセンス」の話なのでスレチ?
copyright notice の表示方法の適切性について、GPLv3って基本的には明確には記載してなくね
ただし今回のケースだと、「インストーラが LGPL によるライセンスを表示した状態」で先に進める以上
0. Definitions. の第8パラグラフ(1) 反対解釈により、「GPLv3は適用されない」と読む余地がある
実際、GPLv3 につき "displays an appropriate copyright notice" してないもの
copyright notice の表示方法の適切性について、GPLv3って基本的には明確には記載してなくね
ただし今回のケースだと、「インストーラが LGPL によるライセンスを表示した状態」で先に進める以上
0. Definitions. の第8パラグラフ(1) 反対解釈により、「GPLv3は適用されない」と読む余地がある
実際、GPLv3 につき "displays an appropriate copyright notice" してないもの
841デフォルトの名無しさん
2019/04/14(日) 00:56:08.63ID:El+pt49w 書き込み制限受けたので続き。多分コレで終わり。
あのインストーラが表示している著作権表示は明確に LGPL だから適用条件満たしてないと解釈する余地がある、と
…わたしはただの学習者だから大騒ぎすることでもねえんだがねえ…
あのインストーラが表示している著作権表示は明確に LGPL だから適用条件満たしてないと解釈する余地がある、と
…わたしはただの学習者だから大騒ぎすることでもねえんだがねえ…
842デフォルトの名無しさん
2019/04/15(月) 21:39:53.28ID:L7qqGgg7 int& a;
int &a;
どっちにすべきでしょうか
int &a;
どっちにすべきでしょうか
843デフォルトの名無しさん
2019/04/15(月) 21:52:39.66ID:zTAvdEPs 好きな方で書け
844デフォルトの名無しさん
2019/04/15(月) 21:56:00.71ID:dimPC8Ge 「すべき」というのは規格表での『shall』のことですか?
それとももっと別の意図がありますか?
それとももっと別の意図がありますか?
845デフォルトの名無しさん
2019/04/15(月) 22:02:16.06ID:1nT5zSFt int & a;
int * b;
int * b;
846はちみつ餃子 ◆8X2XSCHEME
2019/04/15(月) 23:26:36.86ID:94OTneyx std::add_lvalue_reference<int>::type a;
847デフォルトの名無しさん
2019/04/16(火) 07:00:13.97ID:xjyBK9QH そんなこと気にする前に参照の変数を未初期化で使おうとするなよ。
みたいなツッコミを入れたくなるけど、コンパイル時にエラーが出る
間違いは必ず見落としなく直せるから実際は大きな問題じゃないよね。
「ポインタ宣言の * を型名に寄せるか変数名に寄せるか」と同じで
一貫した書き方をするかぎり、どっちでも構わんでしょ。
個人的には「変数名に寄せる」派だけど。
みたいなツッコミを入れたくなるけど、コンパイル時にエラーが出る
間違いは必ず見落としなく直せるから実際は大きな問題じゃないよね。
「ポインタ宣言の * を型名に寄せるか変数名に寄せるか」と同じで
一貫した書き方をするかぎり、どっちでも構わんでしょ。
個人的には「変数名に寄せる」派だけど。
848デフォルトの名無しさん
2019/04/16(火) 08:18:02.67ID:hl7GJiol int& a, &b;
int &a, &b;
自分も後者の方がいい
int &a, &b;
自分も後者の方がいい
849デフォルトの名無しさん
2019/04/16(火) 08:20:49.86ID:GDkTCt4E850デフォルトの名無しさん
2019/04/16(火) 11:22:25.45ID:vZl8q5zB851デフォルトの名無しさん
2019/04/16(火) 12:24:17.44ID:uqcfe1Iw わからない事をここで質問しようとレスを書いてる最中に「わかった!」
ってなることが多々あるんだが、この謎の現象は何なんだ・・・
ってなることが多々あるんだが、この謎の現象は何なんだ・・・
852デフォルトの名無しさん
2019/04/16(火) 12:28:15.56ID:4RjIOnLA 自己解決パターン
質問するときに頭の中が整理される→解決
質問するために再現する必要最小限のコードを書く→問題の切り分けが出来る→解決
いろいろあるが
質問するときに頭の中が整理される→解決
質問するために再現する必要最小限のコードを書く→問題の切り分けが出来る→解決
いろいろあるが
853はちみつ餃子 ◆8X2XSCHEME
2019/04/16(火) 13:21:34.50ID:XnNfa6Fy >>851
何が駄目なのかわかれば解決法は自明であることが多い。
逆に言えば、解決法がわからないときは問題が何であるかわかってなかったりするんだよ。
だから、きちんとした形に質問をまとめれたなら、それはもうほとんど解答でもあるんだ。
この手法を利用してバグを取り除くやり方としてラバーダックデバッギングというものが知られている。
何が駄目なのかわかれば解決法は自明であることが多い。
逆に言えば、解決法がわからないときは問題が何であるかわかってなかったりするんだよ。
だから、きちんとした形に質問をまとめれたなら、それはもうほとんど解答でもあるんだ。
この手法を利用してバグを取り除くやり方としてラバーダックデバッギングというものが知られている。
854デフォルトの名無しさん
2019/04/16(火) 13:51:09.84ID:WfxisTJA C++erならRust学べって風潮嫌い
なんで学習コストがある言語を2つも学ばないといけないのかと思うし
なんで学習コストがある言語を2つも学ばないといけないのかと思うし
855847
2019/04/16(火) 17:31:42.92ID:xjyBK9QH856デフォルトの名無しさん
2019/04/16(火) 17:55:46.56ID:LqBdGBd1 その場合でもコンストラクタで初期化してなかったらエラー出るんだから
説明自体は間違ってない
説明自体は間違ってない
857デフォルトの名無しさん
2019/04/16(火) 21:38:13.69ID:5Rly8M3u >>853
テディベアをおいておくというエピソードなら有名だね
テディベアをおいておくというエピソードなら有名だね
858デフォルトの名無しさん
2019/04/16(火) 22:14:36.94ID:dFuxCqAG >>854
難しいことも違った方向から見るとわかりやすくなることもある。
難しいことも違った方向から見るとわかりやすくなることもある。
859デフォルトの名無しさん
2019/04/19(金) 11:24:45.99ID:qKKG75KJ 質問です。
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))っていつもやってるんでしょうか
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))っていつもやってるんでしょうか
860デフォルトの名無しさん
2019/04/19(金) 11:40:22.57ID:ymX8VCBl intで参照したらEOF
861デフォルトの名無しさん
2019/04/19(金) 12:05:08.07ID:r9r2BfdP 型変換以前に0やnullポインタを評価するとfalse、0以外の値はtrueと評価されると決まっているからだろ。
あと暗黙の型変換はよく起こる。
あと暗黙の型変換はよく起こる。
862デフォルトの名無しさん
2019/04/19(金) 12:08:35.86ID:lgg24wim if 文の条件判定部は bool 型を要求してる前提で解釈,翻訳してるんじゃない
863はちみつ餃子 ◆8X2XSCHEME
2019/04/19(金) 12:13:29.89ID:mypEidUJ864デフォルトの名無しさん
2019/04/20(土) 09:49:03.76ID:9bTTnEnG 前橋和弥さんのC言語ポインタ完全制覇という本で、
PCの環境(CPUの種類など)によってデータのメモリ上の配置は異なる
(構造体のパディングをはじめ、ただの単体のintでさえバイトオーダーが異なる(ワークステーションではビッグエンディアン採用だったりする))
ので、メモリの内容をバイナリでディスク上のファイルに出力したデータは別環境で読み込んで使おうと思ってはいけない
というような事が書いてありましたが、この話はWindows以外の環境や古い環境を前提とした話なのでしょうか?
同書にWindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてあるので、
Windows環境ならゲームのセーブデータとしてクラスをまるごとfwriteでバイナリ出力したファイルを別PCでロードしても問題ないのでしょうか?
(Xeonとかワークステーションマザーとか関係なしに、IntelCPU&Windowsの環境ならばリトルエンディアンで統一されている?)
(Macではビッグエンディアンになるが、Windows環境のみ対応のゲームを作る上では無視してよい?)
という認識は間違っているでしょうか?
パディングの違いなどもWindowsやVisualStudioが自動で良きに計らってくれるのならありがたいのですが…
PCの環境(CPUの種類など)によってデータのメモリ上の配置は異なる
(構造体のパディングをはじめ、ただの単体のintでさえバイトオーダーが異なる(ワークステーションではビッグエンディアン採用だったりする))
ので、メモリの内容をバイナリでディスク上のファイルに出力したデータは別環境で読み込んで使おうと思ってはいけない
というような事が書いてありましたが、この話はWindows以外の環境や古い環境を前提とした話なのでしょうか?
同書にWindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてあるので、
Windows環境ならゲームのセーブデータとしてクラスをまるごとfwriteでバイナリ出力したファイルを別PCでロードしても問題ないのでしょうか?
(Xeonとかワークステーションマザーとか関係なしに、IntelCPU&Windowsの環境ならばリトルエンディアンで統一されている?)
(Macではビッグエンディアンになるが、Windows環境のみ対応のゲームを作る上では無視してよい?)
という認識は間違っているでしょうか?
パディングの違いなどもWindowsやVisualStudioが自動で良きに計らってくれるのならありがたいのですが…
865デフォルトの名無しさん
2019/04/20(土) 09:54:32.44ID:gSzU4BUh windows間だから「別環境」ではなく「同じ環境」
だからwindowsでも同じ
そのbmpデータをmacに持って行っても使えない
なので磁気コアをダンプして永続化したようなデータは、他の全ての環境で使えない
60年代くらいから知られている
だからwindowsでも同じ
そのbmpデータをmacに持って行っても使えない
なので磁気コアをダンプして永続化したようなデータは、他の全ての環境で使えない
60年代くらいから知られている
866デフォルトの名無しさん
2019/04/20(土) 12:00:13.06ID:9bTTnEnG >>865
Windows環境であれば、別PC(別ハード)でも同環境とみなして良いのですね
>>WindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてある
読み直したら、違ってましたm(_ _)m
可変長構造体の節で、
WindowsではBMPをfwriteなどで可変長構造体まるごとダンプしていて、
BMPのような他の環境にもっていく可能性が高いファイルを構造体まるごとダンプしているのがWindowsらしい
というような内容でした
Windows級の一流プログラマーでも構造体まるごと出力を使っているのであれば、
ゲームのセーブデータで構造体やクラスをまるごとバイナリ出力しても問題ないととらえてよいのかな?
Windows環境であれば、別PC(別ハード)でも同環境とみなして良いのですね
>>WindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてある
読み直したら、違ってましたm(_ _)m
可変長構造体の節で、
WindowsではBMPをfwriteなどで可変長構造体まるごとダンプしていて、
BMPのような他の環境にもっていく可能性が高いファイルを構造体まるごとダンプしているのがWindowsらしい
というような内容でした
Windows級の一流プログラマーでも構造体まるごと出力を使っているのであれば、
ゲームのセーブデータで構造体やクラスをまるごとバイナリ出力しても問題ないととらえてよいのかな?
867デフォルトの名無しさん
2019/04/20(土) 12:30:10.75ID:4KhiFNHT >>866
bmpファイルには仕様があるので「Windowsのプログラマがどうたら」なんぞ関係無く仕様に従って読み書きすべし
(現実には仕様に従わない入出力をやらかすアプリ毎に対処することはあるが)
自分で定義した構造体でも外部に公開するなら仕様を決めそれに準ずるべし
公開しないならそれこそ構造体丸ごとダンプなり好きにすれば良い
実際にそういう実装は珍しいものじゃない
どうせ環境の変化で困るとしてもそれは自分だけだからね
bmpファイルには仕様があるので「Windowsのプログラマがどうたら」なんぞ関係無く仕様に従って読み書きすべし
(現実には仕様に従わない入出力をやらかすアプリ毎に対処することはあるが)
自分で定義した構造体でも外部に公開するなら仕様を決めそれに準ずるべし
公開しないならそれこそ構造体丸ごとダンプなり好きにすれば良い
実際にそういう実装は珍しいものじゃない
どうせ環境の変化で困るとしてもそれは自分だけだからね
868デフォルトの名無しさん
2019/04/20(土) 12:41:44.36ID:YI/oz/6Z869デフォルトの名無しさん
2019/04/20(土) 13:30:16.46ID:9bTTnEnG つまり、後で困りたくなかったら、フォーマット(読み書きするサイズと順番?)を決めて
構造体のメンバ変数ひとつひとつ読み書きしていかないとだめなのか
…めんどくさいなー
構造体のメンバ変数ひとつひとつ読み書きしていかないとだめなのか
…めんどくさいなー
870デフォルトの名無しさん
2019/04/20(土) 13:36:22.54ID:VX0Nm4MT 異なる環境で扱う可能性のあるファイルならフォーマットを決めるのは当然だが
メンバ毎にアクセスしなければならないかどうかは処理系によるだろう。
仕様さえ合えば構造体で読み書きしてもいいわけで。
メンバ毎にアクセスしなければならないかどうかは処理系によるだろう。
仕様さえ合えば構造体で読み書きしてもいいわけで。
871デフォルトの名無しさん
2019/04/20(土) 13:50:12.18ID:bN8wmmjE 構造体まるごと fread/fwrite した後に
環境に応じて必要な場所だけLE/BE の変換をかける
htons とか htonl とか使う
環境に応じて必要な場所だけLE/BE の変換をかける
htons とか htonl とか使う
872デフォルトの名無しさん
2019/04/20(土) 14:02:21.45ID:lwUZZddo どういう読まれ方をするか分からない時はXML型式のテキストファイルにしてしまう
873デフォルトの名無しさん
2019/04/20(土) 14:59:40.99ID:9bTTnEnG874デフォルトの名無しさん
2019/04/20(土) 15:15:30.02ID:n+3CNjUJ 自分では使ったことないけど、BoostのSerializationは?
875はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 16:21:19.89ID:7hm/FBJ7 パーサコンビネータはバイナリファイルに使ってもいいんだよ。
あとは protobuf とかのジェネレータ系のツールもありかな。
あとは protobuf とかのジェネレータ系のツールもありかな。
876デフォルトの名無しさん
2019/04/20(土) 18:28:05.65ID:wS9Za22Y VC++用に使ってるマシンのCPUがivy bridgeのi5の3570なんだけど、
そのマシンでは8の倍数バイトを境界としてパディングが入ってるかんじなんだけど、
Core2Duo世代のCPUだとどうなんだろう?
4の倍数バイトを境界とする様な古いCPUがネットバースト世代以前とかの相当古い環境だとしたら、もう動作対象環境から外しても良い気がしてきた
そうだとしたら、クラスまるごとバイナリ読み書きでよいのかな
そのマシンでは8の倍数バイトを境界としてパディングが入ってるかんじなんだけど、
Core2Duo世代のCPUだとどうなんだろう?
4の倍数バイトを境界とする様な古いCPUがネットバースト世代以前とかの相当古い環境だとしたら、もう動作対象環境から外しても良い気がしてきた
そうだとしたら、クラスまるごとバイナリ読み書きでよいのかな
877デフォルトの名無しさん
2019/04/20(土) 18:51:11.02ID:IzYZbHJM878デフォルトの名無しさん
2019/04/20(土) 19:22:01.02ID:wS9Za22Y >>877
ありがとう
これでどうかな?
//-------------------------------------------------
#include <stdio.h>
#include <conio.h>
class ClassName
{
public:
int int_1;
double double_1;
char char_1;
double double_2;
};
int main(void)
{
ClassName class_obj;
printf("クラスインスタンスのサイズ:%d\n",sizeof(class_obj));
printf("int_1のアドレス:%p\n",&class_obj.int_1);
printf("double_1のアドレス:%p\n",&class_obj.double_1);
printf("char_1のアドレス:%p\n",&class_obj.char_1);
printf("double_2のアドレス:%p\n",&class_obj.double_2);
_getch();
return 0;
}
//-------------------------------------------------
クラスインスタンスのサイズが24なら4の倍数バイト、32なら8の倍数バイトの境界になってると思う
(8の倍数バイトの境界なら、各メンバのアドレス(16進数表示)が全部8違いになってるはず)
ありがとう
これでどうかな?
//-------------------------------------------------
#include <stdio.h>
#include <conio.h>
class ClassName
{
public:
int int_1;
double double_1;
char char_1;
double double_2;
};
int main(void)
{
ClassName class_obj;
printf("クラスインスタンスのサイズ:%d\n",sizeof(class_obj));
printf("int_1のアドレス:%p\n",&class_obj.int_1);
printf("double_1のアドレス:%p\n",&class_obj.double_1);
printf("char_1のアドレス:%p\n",&class_obj.char_1);
printf("double_2のアドレス:%p\n",&class_obj.double_2);
_getch();
return 0;
}
//-------------------------------------------------
クラスインスタンスのサイズが24なら4の倍数バイト、32なら8の倍数バイトの境界になってると思う
(8の倍数バイトの境界なら、各メンバのアドレス(16進数表示)が全部8違いになってるはず)
879デフォルトの名無しさん
2019/04/20(土) 20:52:42.24ID:IzYZbHJM >>878
ソースありがとう
クラスインスタンスのサイズ:32
int_1のアドレス:0036F7A0
double_1のアドレス:0036F7A8
char_1のアドレス:0036F7B0
double_2のアドレス:0036F7B8
これで情報足りるかな?
ttps://i.imgur.com/YAVbZWa.jpg
ソースありがとう
クラスインスタンスのサイズ:32
int_1のアドレス:0036F7A0
double_1のアドレス:0036F7A8
char_1のアドレス:0036F7B0
double_2のアドレス:0036F7B8
これで情報足りるかな?
ttps://i.imgur.com/YAVbZWa.jpg
880デフォルトの名無しさん
2019/04/20(土) 21:11:23.94ID:wS9Za22Y >>879
どうもありがdd
Core2Duoで8バイト境界になってるなら、もう4バイト境界の環境の事は無視しても大丈夫なのかもね
思ったんだけど、もしかしたら、32bit(4バイト)のみ対応のCPUと32bit/64bit(8バイト)両対応のCPUの違いなのかな?
違うかな?そんなに単純な話ではないか・・・
どうもありがdd
Core2Duoで8バイト境界になってるなら、もう4バイト境界の環境の事は無視しても大丈夫なのかもね
思ったんだけど、もしかしたら、32bit(4バイト)のみ対応のCPUと32bit/64bit(8バイト)両対応のCPUの違いなのかな?
違うかな?そんなに単純な話ではないか・・・
881デフォルトの名無しさん
2019/04/20(土) 21:42:31.24ID:QAu79rb4 https://docs.microsoft.com/ja-jp/cpp/build/reference/zp-struct-member-alignment
https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack
だいたい sizeof(class_obj) がコンパイル時定数なことくらいC++やってりゃわかるだろ・・・
https://docs.microsoft.com/ja-jp/cpp/preprocessor/pack
だいたい sizeof(class_obj) がコンパイル時定数なことくらいC++やってりゃわかるだろ・・・
882デフォルトの名無しさん
2019/04/21(日) 00:19:13.52ID:WKly27nG 本質じゃないがxmlじゃなくてjsonがオススメ
もっと突っ込むならyamlがオススメ
もっと突っ込むならyamlがオススメ
883はちみつ餃子 ◆8X2XSCHEME
2019/04/21(日) 01:03:10.69ID:v5pFgDlL YAML は人間が読むこともあるなら可読性とのバランスで選ぶことはあるかもしれんが、
機械可読であればよいような場面で選択する理由は無いんじゃないかな。
既存のライブラリを使えばどれでも手間は大差ないとは思うけど、
バイナリ表現だと MessagePack とか Bencode とかいった選択肢もあるし、
どうして色々なフォーマットが登場したのかというとなんだかんだで「場合による」としか言い様がないからなんで、
まあ主要なやつを一通り特徴を把握しといた方が良いよね。
機械可読であればよいような場面で選択する理由は無いんじゃないかな。
既存のライブラリを使えばどれでも手間は大差ないとは思うけど、
バイナリ表現だと MessagePack とか Bencode とかいった選択肢もあるし、
どうして色々なフォーマットが登場したのかというとなんだかんだで「場合による」としか言い様がないからなんで、
まあ主要なやつを一通り特徴を把握しといた方が良いよね。
884デフォルトの名無しさん
2019/04/21(日) 01:14:51.26ID:VOTCwJrR yamlって何に使うの?
885デフォルトの名無しさん
2019/04/21(日) 03:00:37.96ID:dJmpMhpq yamlよりはjsonかなぁ
886デフォルトの名無しさん
2019/04/21(日) 08:42:04.15ID:nzBarAq0 何にじゃねえな
yamlはperl
jsonはjavascript
時代の流れでjsonが優勢になった
出来ることや表現力はあんまり変わらない
yamlはperl
jsonはjavascript
時代の流れでjsonが優勢になった
出来ることや表現力はあんまり変わらない
887デフォルトの名無しさん
2019/04/21(日) 09:55:35.58ID:0mpGXc/m yamlは最近dockerとかkubanetessとかansibleとかインフラ/環境系ツールのせいでやたら触る事が多い
888デフォルトの名無しさん
2019/04/21(日) 11:02:24.76ID:rR+Epd4r もう16バイト境界なんてのも出てきてるのか
VisualStudioのプロジェクトのプロパティのC/C++のコード生成で
構造体メンバのアライメントを8にするか、
コード上で #pragma pack(8) とすれば
強制的に8バイト境界にできるみたいだけど、
マシンに最適な既定値のアライメントから変更する事で速度が遅くなったり
何か不具合が生じたりするものかな?
VisualStudioのプロジェクトのプロパティのC/C++のコード生成で
構造体メンバのアライメントを8にするか、
コード上で #pragma pack(8) とすれば
強制的に8バイト境界にできるみたいだけど、
マシンに最適な既定値のアライメントから変更する事で速度が遅くなったり
何か不具合が生じたりするものかな?
889デフォルトの名無しさん
2019/04/21(日) 11:17:14.94ID:iFY66t+o 既定のアライメントというのはふつう、メンバの単純型のサイズに合わせられるはず。
16byteの単純型を使うのでなければ16byte境界にする必要もない。
16byteの単純型を使うのでなければ16byte境界にする必要もない。
890デフォルトの名無しさん
2019/04/21(日) 11:17:32.77ID:rR+Epd4r 問題ないなら旧環境との互換性重視で4バイト境界にするのもありかな?
891デフォルトの名無しさん
2019/04/21(日) 11:52:51.02ID:iFY66t+o 互換性重視なら、各メンバを自然なアライメントに配置して手でpaddingを挿入して#pragma pack(1)。
>マシンに最適な既定値のアライメント
少なくともx86の場合、それが4とか8とか決まっているわけじゃない。
>マシンに最適な既定値のアライメント
少なくともx86の場合、それが4とか8とか決まっているわけじゃない。
>>891
#pragma pack なんて MS の方言でしょう?そんなのを使いながら「互換性重視」とか矛盾してませんか?
#pragma pack なんて MS の方言でしょう?そんなのを使いながら「互換性重視」とか矛盾してませんか?
893デフォルトの名無しさん
2019/04/21(日) 12:45:11.23ID:iFY66t+o そこはポイントじゃないから勝手に読み替えて。
894デフォルトの名無しさん
2019/04/21(日) 15:46:14.10ID:ECfCuHga C言語ならともかくC++なのに例外を避けようとする人ってあたまおかしいのかな
標準ライブラリもその他のライブラリも例外を投げる前提なのに頑なに例外を避けようとするってそうとうに筋が悪い非合理的な選択肢だよね
標準ライブラリもその他のライブラリも例外を投げる前提なのに頑なに例外を避けようとするってそうとうに筋が悪い非合理的な選択肢だよね
896デフォルトの名無しさん
2019/04/21(日) 16:03:56.39ID:dJmpMhpq897デフォルトの名無しさん
2019/04/21(日) 16:08:40.35ID:ECfCuHga SJLJの話じゃないです
例外を避けてオレオレエラーコードを返す迷惑な人達の話です
例外を避けてオレオレエラーコードを返す迷惑な人達の話です
898デフォルトの名無しさん
2019/04/21(日) 17:16:18.32ID:ZtsKSKQ7 例外もまともにキャッチされないので
どっちもクソです
どっちもクソです
899デフォルトの名無しさん
2019/04/21(日) 17:17:33.88ID:ym7YjNtF エラーの発生頻度によるのでは?
throwは高コストだから発生頻度が高い場合は戻り値で処理した方がいい
throwは高コストだから発生頻度が高い場合は戻り値で処理した方がいい
900デフォルトの名無しさん
2019/04/21(日) 17:22:58.19ID:nzBarAq0 システムによる
航空機の運航システムでのエラー処理はどうすりゃいいわけさ
航空機の運航システムでのエラー処理はどうすりゃいいわけさ
901デフォルトの名無しさん
2019/04/21(日) 17:53:59.57ID:ECfCuHga >>899
入力の検証、パース以外で頻繁に発生するエラーって例えば何でしょうか?
そもそもthrowはコストそんなに高くないのでは?
エラー情報(コード、メッセージ、下位エラー情報、スタックトレース等)を戻りでコピーしまくるほうが高く付くと思います
入力の検証、パース以外で頻繁に発生するエラーって例えば何でしょうか?
そもそもthrowはコストそんなに高くないのでは?
エラー情報(コード、メッセージ、下位エラー情報、スタックトレース等)を戻りでコピーしまくるほうが高く付くと思います
>>896
自分で実装できないものを、その仕組みもわからないのにホイホイ使ってしまってもいいのでしょうか?
他の言語ならともかく、C/C++er がそういうところに無自覚なのは大いに問題があるのでは?
そんなことでデバッグできますか?
自分で実装できないものを、その仕組みもわからないのにホイホイ使ってしまってもいいのでしょうか?
他の言語ならともかく、C/C++er がそういうところに無自覚なのは大いに問題があるのでは?
そんなことでデバッグできますか?
904デフォルトの名無しさん
2019/04/21(日) 18:28:33.16ID:ECfCuHga >>902
内部構造がわからないものでもAPIドキュメントを読んで使えるようになるのが正しいプログラマでは?
内部構造がわからないものでもAPIドキュメントを読んで使えるようになるのが正しいプログラマでは?
905デフォルトの名無しさん
2019/04/21(日) 18:34:32.58ID:dJmpMhpq まあそういう賢いプログラマなら当然の様にSpectreの可能性に気づいて対策していたんだろうね。
きっと
きっと
907デフォルトの名無しさん
2019/04/21(日) 18:41:53.50ID:dJmpMhpq つまりすべてのAPIをスクラッチでかける人間以外使うなと言うことなんだな
908デフォルトの名無しさん
2019/04/21(日) 18:42:38.56ID:ECfCuHga909デフォルトの名無しさん
2019/04/21(日) 18:44:31.12ID:dJmpMhpq 大体sj,ljが肝なのだから、そこ丸投げしたら同じようなもの
910デフォルトの名無しさん
2019/04/21(日) 18:51:39.35ID:ECfCuHga 内部構造まで把握してなきゃ使っちゃだめなんていう烏滸がましい思想を持ってると
実装に強い影響を受けるエラーコード返し方式を選んでしまうのだろうな
実装に強い影響を受けるエラーコード返し方式を選んでしまうのだろうな
911デフォルトの名無しさん
2019/04/21(日) 18:52:38.66ID:idC8t1Zb なんかライブラリ使ってるだけの輩がイキリ出しとるなw
確かにライブラリによってはそのライブラリの単体テストなり書いといた方が良いこともある。
確かにライブラリによってはそのライブラリの単体テストなり書いといた方が良いこともある。
912はちみつ餃子 ◆8X2XSCHEME
2019/04/21(日) 18:57:06.46ID:v5pFgDlL 静的例外の提案がある。
使える例外オブジェクトに制限があるし、
静的例外を投げる可能性がある関数は型として明記しないといけないけれど、
見かけ上は例外の構文を使いつつ
実質的に返却値と合わせて例外オブジェクトを受け渡すような方法をとれる。
https://cpplover.blogspot.com/2018/07/c.html
江添氏もこれには期待しているらしいことを書いている。
使える例外オブジェクトに制限があるし、
静的例外を投げる可能性がある関数は型として明記しないといけないけれど、
見かけ上は例外の構文を使いつつ
実質的に返却値と合わせて例外オブジェクトを受け渡すような方法をとれる。
https://cpplover.blogspot.com/2018/07/c.html
江添氏もこれには期待しているらしいことを書いている。
913デフォルトの名無しさん
2019/04/21(日) 18:59:12.07ID:ECfCuHga >>911
SOLIDを実践しないからそんなおかしなテストを書くはめになるんでしょうな
SOLIDを実践しないからそんなおかしなテストを書くはめになるんでしょうな
914デフォルトの名無しさん
2019/04/21(日) 19:03:01.42ID:dJmpMhpq 例外便利だけど、例外が高確率で起こる場面じゃ使うと遅くなるから、仕方なく結果コード判定してとかの糞コード書かなきゃいけなくなる。
915デフォルトの名無しさん
2019/04/21(日) 19:10:10.25ID:ECfCuHga916デフォルトの名無しさん
2019/04/21(日) 19:10:58.11ID:ym7YjNtF 俺は戻り値をboolにするかbool*のout引数を用意してエラー内容はメンバに記憶しておき、
成否だけで十分な場面では単純にbool値だけを見て、詳細が必要な場面だけエラー内容を取得する
ってやり方が気に入ってる
成否だけで十分な場面では単純にbool値だけを見て、詳細が必要な場面だけエラー内容を取得する
ってやり方が気に入ってる
917デフォルトの名無しさん
2019/04/21(日) 19:12:17.54ID:ECfCuHgaレス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- >>3と>>5のワードを使ってai生成する
- 中国人「高市早苗が首相になってからの日本での中国人観光客の1日がこれらしいw」中国でバカウケ [165981677]
- ガバガバなんだよ
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
