[過去ログ] C++相談室 part164 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
321: (アウアウウー Sacd-Hkv7) 2023/06/23(金)16:14 ID:lCxAQSJFa(2/2) AAS
>>313
Code::Blocks (+ mingw)
322: (ワッチョイ 69f0-J7ro) 2023/06/23(金)18:47 ID:5tcqgCxE0(1/2) AAS
コンパイラの本なにがいいのかオススメ聞いたらオッサンに聞いたら怪獣が書いてある本って云われて本屋行って買ったらあとで付録のFDD誰かにかっぱわられていタコとに気付いたけどその本一冊ではなんの役にも立たないクソみたいな本だったわ
そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ
323: (ワッチョイ 69f0-J7ro) 2023/06/23(金)19:05 ID:5tcqgCxE0(2/2) AAS
良く見たら全然違ったわw
画像リンク[jpg]:i.imgur.com
yacc&lexが早乙女氏でBison&Flexが五月女氏でオライリーに似てるけどASCII出版やったわ
324(1): (テテンテンテン MM96-Axrn) 2023/06/23(金)19:51 ID:s3XGk2XtM(1) AAS
>>316
まず動くものを作ることに注力したほうがいい。
どうせ最初のコードは(問題領域の学習後に)捨てることになるから、プロトタイプと割り切るべき。あんまり頑張ると進捗悪くて挫折するし、うまく行ってもコンコルド効果で酷い目にあう。
>>310
確かに静的変数は自動だけど別物だな……よくやった。悔しいが褒めてやろう。
325: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) 2023/06/23(金)22:40 ID:Xemzxb7u0(3/3) AAS
>>324
???
storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。
外部リンク[stc]:timsong-cpp.github.io
兼ねる場合は存在しない。
326: (ワッチョイ 6501-2DXs) 2023/06/24(土)08:29 ID:31MSzc3x0(1) AAS
>まず動くものを作ることに注力したほうがいい。
+1票
>いくつかのコンパイラで試してみれば問題点を発見しやすい。
これはその通りだけど、もっともっと先の話
327(1): (ワッチョイ 856e-gmRT) 2023/06/24(土)09:51 ID:xNNc2oEW0(1) AAS
動くといってもHello worldじゃあまりにもモチベーションに乏しいから
何でもいいから目的目標を持ったプログラムを書いたほうがいい
328: はちみつ餃子◆8X2XSCHEME (ワッチョイ dd3e-F8yx) 2023/06/24(土)12:57 ID:rXisqo0O0(1) AAS
>>327
この話題の大元である >>313 でコンパイラを書くと書いてあるよ。
329: (ワッチョイ 6501-wYA+) 2023/06/24(土)20:48 ID:rm+SB6K20(1) AAS
ドラゴンブックでは?
誤植を指摘できるくらい読み込めば古典は理解できてると思う
330: (アウアウウー Sa69-F3wx) 2023/06/27(火)14:41 ID:DdZG5nY/a(1) AAS
いつまでも初心者を抜け出せない人は初心者本を読み過ぎ
331: (ワッチョイ 856e-gmRT) 2023/06/27(火)17:36 ID:59BI4JPS0(1/2) AAS
初心者本は【ど】初心者のうちだけにしとけ
謙虚なことはいいことだが、ここだけは背伸びしたほうがいい
初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ
禿本が普通に読めるようになったら次はISOの規格票
332: (ワッチョイ 856e-gmRT) 2023/06/27(火)17:38 ID:59BI4JPS0(2/2) AAS
逆もしかり
ISOの規格票であえなくギブしたら禿本
禿本でギブのとき初心者本に戻る感じな
333: (ワッチョイ 8d7c-BujW) 2023/06/27(火)18:00 ID:h1cnuIf90(1) AAS
特にC++は下手な参考書より規格の方が分かりやすかったりするからな…
334(1): (ワッチョイ dd4e-OfpS) 2023/06/27(火)18:15 ID:D2orubkn0(1) AAS
初心者へのアドバイスに禿本とかいう隠語をつかうのはどうかと思う
335(2): (ワッチョイ d5b3-q57E) 2023/06/27(火)18:27 ID:KKkR5HKI0(1/2) AAS
今独学でC++学んでいるんですが、たまたま見つけたサイトでint32_tとありましたが
int変数を宣言するのにint32_tなんて使いませんよね?
intでokですよね?
336: (ワッチョイ ad5f-VF0j) 2023/06/27(火)18:34 ID:3myjDgNL0(1) AAS
何に使うか次第
337: (ワッチョイ ad02-ES2+) 2023/06/27(火)18:46 ID:gpD88JT50(1) AAS
>>335
32ビット長である必要があるときだけint32_tを使えばいいよ
338: (ワッチョイ d5b3-q57E) 2023/06/27(火)19:26 ID:KKkR5HKI0(2/2) AAS
サンクス
339: はちみつ餃子◆8X2XSCHEME (ワッチョイ dd3e-F8yx) 2023/06/27(火)19:30 ID:wxXBe/Gr0(1) AAS
>>335
int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。
具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。
扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。
ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。
C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。
初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。
340(3): (ワッチョイ 856e-gmRT) 2023/06/28(水)05:36 ID:p/gJzJ+n0(1/3) AAS
>>334
知らなきゃ聞くだろ
341: (スッップ Sd43-KhjG) 2023/06/28(水)05:40 ID:PRZu9/2Od(1) AAS
>>340
禿本って誰ですか?
342: (ワッチョイ 856e-gmRT) 2023/06/28(水)07:54 ID:p/gJzJ+n0(2/3) AAS
Bjarne Stroustrup著 The C++ Programming Language
ISBN-10 4797375957
343: (ワッチョイ 856e-gmRT) 2023/06/28(水)07:55 ID:p/gJzJ+n0(3/3) AAS
禿のブログ
外部リンク:www.stroustrup.com
344: (ワッチョイ dd4e-OfpS) 2023/06/28(水)11:12 ID:MFKAAcNx0(1) AAS
>>340
誰も知らないから隠語なんだよ
たまにいるよな、相手の知らないであろう単語を使ってマウントを取った気分になるやつ
345: (テテンテンテン MM4b-HUf/) 2023/06/28(水)12:11 ID:gg0vhlU/M(1) AAS
>>340
検索すると別人の本が出てくるから駄目だろ。
346: (ワッチョイ 23f0-OfpS) 2023/06/29(木)00:03 ID:XHjEw6wR0(1/2) AAS
C++でintと書けない理由はほぼほぼwindowsのintが32ビットと定義されているからで、
逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ
347: (ワッチョイ 4be5-O9q2) 2023/06/29(木)07:49 ID:0UnKiO4J0(1) AAS
せいぜい数十までの整数でも、いちいちint8_tになんかしねえな
348(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ dd3e-F8yx) 2023/06/29(木)08:15 ID:l+ZsGqGg0(1/3) AAS
巨大な配列なら話は別だが単発の整数がレジスタより小さくても得なことが無いからな。
349: (ワッチョイ 9dc9-3ptY) 2023/06/29(木)08:19 ID:beCjxg/z0(1) AAS
通信関連でペイロードに ビット長指定されてるのなんかは int○_t 使っときたい
350: (ワッチョイ 8590-bmws) 2023/06/29(木)11:02 ID:prJHgW/t0(1/2) AAS
intでもshortでもCPUの計算速度は同じ
351(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ dd3e-F8yx) 2023/06/29(木)11:11 ID:l+ZsGqGg0(2/3) AAS
四則演算では int より小さい整数は int に拡張する変換が入ることになってるし、
int を受け取る関数でも当然に変換されるので
変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。
352: (ワッチョイ 8590-bmws) 2023/06/29(木)11:21 ID:prJHgW/t0(2/2) AAS
言葉足らずだったな
初学者向けに正確にいえば
ビット数の低い数値の型にしたからといって
計算速度が速くなるワケじゃない
理由はハチミツ氏の記述通り
353: (ワッチョイ 23f0-OfpS) 2023/06/29(木)17:52 ID:XHjEw6wR0(2/2) AAS
型のサイズが大きいほどキャッシュミスの確率が上がるし
ベクトル化の効率も関わってくるから話はそう簡単でもないけどな
354: はちみつ餃子◆8X2XSCHEME (ワッチョイ dd3e-F8yx) 2023/06/29(木)18:01 ID:l+ZsGqGg0(3/3) AAS
チューニングが必要になったら実測しろってのはそういうことよな。
やってみるまでわからん。
355: (ワッチョイ 23ad-F8yx) 2023/06/30(金)13:08 ID:fR+nHOGQ0(1) AAS
やはり64bitCPUなら64bit整数が一番計算が速かったりするのかな
356: (ワッチョイ 05a7-7pYU) 2023/06/30(金)13:38 ID:x+ZjTlP+0(1) AAS
>>348
al、ah、axと小さなレジスタでやりくりすることによりスタックすらも使わずに複数の変数を操作することは可能になる
まあ汎用レジスタ数の多い64bitアプリではあんまりメリットにならんが
357: (ワッチョイ 4bf2-kZxR) 2023/06/30(金)13:40 ID:GCvfqGNe0(1) AAS
普通、intは32bitじゃないの?
普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ
358(1): (ワッチョイ dd4e-OfpS) 2023/06/30(金)15:06 ID:4d5Im9Ce0(1/3) AAS
多少のCPU内の計算速度差より、メモリアクセスのペナルティの方が遙かに影響でかいんだよね
昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった
359: (ワッチョイ ad02-ES2+) 2023/06/30(金)16:50 ID:4gqYGJxm0(1) AAS
じゃあ16ビット整数使おうぜ!
360: (スッップ Sd43-+46M) 2023/06/30(金)18:10 ID:diu+eantd(1) AAS
ILP32
LLP64 windows: int32 long32 long long 64
LP64 unix: int32 long64 long long 64
ILP64 実装例なし
361(1): (スプッッ Sd03-+QuN) 2023/06/30(金)18:16 ID:rpfOZ2Y1d(1) AAS
>>358
自作エディタの内部文字コードに悩んでるけどもしかしてUTF8がええのかな
362(1): (ワッチョイ dd4e-OfpS) 2023/06/30(金)18:31 ID:4d5Im9Ce0(2/3) AAS
>>361
utf8は日本語3バイトになるし、冗長コードの問題もあるし、処理がより煩雑になるから内部処理コードには一番向かないと思う
エディタなら素直にutf32(もしくは16)で持つのが良いような気がする
363(1): (ワッチョイ 8d9c-HUf/) 2023/06/30(金)18:50 ID:JeB1mWDr0(1) AAS
>>362
utf16はサロゲートペアがあるから避けたほうがいい。
簡単に実装するならutf32、メモリを節約するならutf8。だけど、utf8が覇権だからutf8にしたら?
364: (ワッチョイ 8d7c-BujW) 2023/06/30(金)18:53 ID:ccKyFSM70(1/2) AAS
今から新規にエディタ作るなら内部はUTF32一択でしょ
それ以外を使う理由がない
365: (ワッチョイ dd4e-OfpS) 2023/06/30(金)20:01 ID:4d5Im9Ce0(3/3) AAS
>>363
サロゲートペアの判定は簡単だし、utf32でも厳密には1文字=1要素にはならないし、
メモリアクセス量との兼ね合いでより高速に動作しそうな気がするが…避ける理由がよく分からない
366: (ワッチョイ 9d10-56Vs) 2023/06/30(金)20:23 ID:fhTbp4mH0(1) AAS
今どきは絵文字とかも絡んでくるから「簡単に実装」なんてそうそう言えないと思うんだよね
性別やら肌の色で修飾みたいな複雑仕様を網羅する必要があるから
367(1): (ワッチョイ 8d7c-BujW) 2023/06/30(金)21:27 ID:ccKyFSM70(2/2) AAS
Unicodeの処理なんてただでさえ魔境なんだから減らせる複雑性は減らしといた方が良いよ
悪いこと言わないからUTF32にしとけ
368: (ワッチョイ e2ad-hRAP) 2023/07/01(土)10:11 ID:6RngsvF70(1/3) AAS
テキストエディタを自作すると一文字一文字の描画位置の計算を毎回しなければならず、結局全テキストをデータutf32形式で保持するのが楽という結論になりそう
369: (ラクッペペ MM8e-J/Sn) 2023/07/01(土)10:21 ID:zjPNSumQM(1) AAS
そこまでやるとワープロやDTPの範疇では?
370: (ササクッテロラ Sp5f-kcaK) 2023/07/01(土)10:38 ID:oFUv7PIMp(1/2) AAS
>>351
変換する処理ったって、普通static_castにコスト発生せんやろ
371: (ササクッテロラ Sp5f-kcaK) 2023/07/01(土)10:41 ID:oFUv7PIMp(2/2) AAS
static_castというよりstatic_cast相当というべきか
もちろん浮動小数点数と整数だと命令いるけど
372: (オイコラミネオ MMe7-+Mc8) 2023/07/01(土)10:43 ID:hNdT1t6QM(1/3) AAS
レジスタの拡張命令が必要になる
それはゼロコストではない
373: (オイコラミネオ MMe7-+Mc8) 2023/07/01(土)10:45 ID:hNdT1t6QM(2/3) AAS
8bit,16bitの値を同サイズのレジスタに読む
それを32bitへ拡張する
374: (ササクッテロラ Sp5f-kcaK) 2023/07/01(土)10:49 ID:UYNjOrxwp(1) AAS
そうなのか、知らんかった・・・
375: (オイコラミネオ MMe7-+Mc8) 2023/07/01(土)10:55 ID:hNdT1t6QM(3/3) AAS
8bitしかないのに32bitで読むと当然ごみが入るので何かしないといけない
逆に8bitだけ読んで何もしないとこちらもレジスタにゴミが残ってる
何もしないで使える場合なにかしらの仕組みがある
そんなことするよりレジスタ拡張命令使った方がいい
通常の命令だけでなくてsimdにも用意されている
376: はちみつ餃子◆8X2XSCHEME (ワッチョイ 433e-hRAP) 2023/07/01(土)10:57 ID:7zrd4+jP0(1/3) AAS
俺も >>367 の意見に賛成。
UTF-32 の採用で何もかも良くなるわけではないが
少なくともコードポイント単位での扱いは楽になる。
377(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 433e-hRAP) 2023/07/01(土)10:58 ID:7zrd4+jP0(2/3) AAS
ちょうど Unicode 関連の本を読んでたんだが
右から左へ書く言語だとか
それが入れ子になってる場合だとか、
そういうのにちゃんと配慮したソフトウェアが世の中にあるのは
めちゃくちゃ頑張った人がいるんだなぁと有難みを感じてる。
378: (スププ Sd02-+VJx) 2023/07/01(土)12:18 ID:W7avfgkdd(1) AAS
日本語も右から左に書く言語だ
正確には上から下と右から左ニダ
379: (ワッチョイ 17f0-mXgB) 2023/07/01(土)12:20 ID:86MprtLh0(1) AAS
BiDiモード
380: (ラクッペペ MM8e-J/Sn) 2023/07/01(土)12:42 ID:ZV4XYgX9M(1) AAS
世界でも珍しい縦書き文化
381(1): (ワッチョイ 0e79-p0MK) 2023/07/01(土)15:53 ID:GgZZqhZy0(1) AAS
UTF32派の人ってWin32でW系API通す時に毎回変換するってこと?
382: はちみつ餃子◆8X2XSCHEME (ワッチョイ 433e-hRAP) 2023/07/01(土)16:08 ID:7zrd4+jP0(3/3) AAS
>>381
そうだよ。
作るアプリケーションがエディタ (またはシーケンシャルではない
テキスト操作をする何か) であるという前提を置いているときなら
という条件付きな話だが。
383: (ワッチョイ e2ad-hRAP) 2023/07/01(土)17:26 ID:6RngsvF70(2/3) AAS
そもそもWin32でA系APIにutf8渡せないし
384(1): (ワッチョイ 7b9c-44el) 2023/07/01(土)17:29 ID:ceIwatEY0(1) AAS
A系にはutf8渡せるんじゃないの?
385: (ワッチョイ e2ad-hRAP) 2023/07/01(土)17:36 ID:6RngsvF70(3/3) AAS
渡せるという表現がまずかったかな
結果を気にしなければ、なんでも渡せるよ
386(1): (ワッチョイ 06f2-fGW2) 2023/07/01(土)17:43 ID:XU86fDmw0(1/2) AAS
>>384
Windows バージョン 1903 (2019 年 5 月の更新プログラム) 以降、ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
387(2): (ラクッペペ MM8e-J/Sn) 2023/07/01(土)19:58 ID:Z2fZL/QQM(1) AAS
A系はASCIIなのでunicode由来のutfもshift-jis などのMBCSも扱えない
388: (ワッチョイ 06f2-HE4y) 2023/07/01(土)20:10 ID:XU86fDmw0(2/2) AAS
>>387
最近までは、-A API がレガシと見なされていました。
これは、何十年もの間、Windows が "Unicode" -W バリアントを推進していたためです。
しかし、最近のリリースの Windows では、ANSI コード ページと -A API を活用し、
新しい SKU で UTF-8 サポートを導入しています。 ANSI コード ページが
UTF-8 に対して構成されている場合、-A API は UTF-8 で動作します。
389: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd02-Ojup) 2023/07/01(土)20:13 ID:6ckc7dLGd(1/2) AAS
>>387
以前からCP_ACPは日本語環境でシフトJISを扱えたはず。CP_ACPの解釈をCP_UTF8にすることができる設定と見なせる。
390(1): (ブーイモ MM8e-44el) 2023/07/01(土)20:43 ID:B2exONcuM(1) AAS
ASCIIしか考えてないアメリカ人の作ったプログラムでもUTF-8ならそれなりに動くよね
strlenが正確な文字数を返してくれるわけではないけども
391(2): 蟻人間◆T6xkBnTXz7B0 (スフッ Sd02-Ojup) 2023/07/01(土)20:55 ID:6ckc7dLGd(2/2) AAS
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定すればUTF-8な環境でも動く。
392: (ワッチョイ 7f28-iz2R) 2023/07/01(土)23:06 ID:5I1AeY3j0(1) AAS
そうなの?
ただ単に変換APIの第一引数に明示的にシフトJISのコードページ932を指定しただけだと
とりわけWideCharToMultiByte()の場合、文字コードの自動判別が介在する余地もなく、
ウィンドーズ内部表現のUTF-16がシフトJISのコードページ932に(指定通りに)変換されるだけなんじゃないの……
M$のページ見たら
>マニフェストの ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
>マニフェストの ActiveCodePage プロパティを使って
省3
393(1): (ワッチョイ 06f2-HE4y) 2023/07/02(日)00:11 ID:26TSX02F0(1) AAS
そういう話じゃない
〜A系のAPIの文字列引数にUTF8が使えるようになったという話だ
394: (ワッチョイ ce9a-EKe4) 2023/07/02(日)00:28 ID:MfIRncIE0(1/3) AAS
>>390
>strlenが正確な文字数を返してくれるわけではないけども
そもそも正確な文字数が必要な局面って?
そもそもUnicodeにおける「文字」って
395: (ラクッペペ MM8e-J/Sn) 2023/07/02(日)00:43 ID:B6PMzb/YM(1) AAS
A系ならstrlen、W系ならlstrlen使えば済む話では?
396(2): (ワッチョイ ce9a-EKe4) 2023/07/02(日)01:40 ID:MfIRncIE0(2/3) AAS
>>377
Unicode自体と同様、文句もあるけど世界中が規格化標準化されるのはやはり
有益な面があるなあと思ったり
言語を完全に知らなくてもそういう規則に従えばまあまあのものが出来る
そうやって自分もRTLなテキストを処理するコードを書いたことがあるし
日本語を(も)扱うコードだってどこかの外人が書いてるわけで
そうだ、日本語だって戦前はRTL。あれ、英語はどうしてたんだろ.... 敵性言語だから
省3
397: (ワッチョイ cb02-ctHD) 2023/07/02(日)04:10 ID:3Rb9PhMu0(1/2) AAS
Visual C++してもいいでしょうか?
特定の既定のライブラリの無視に「LIBCMT.lib」を設定して
マルチスレッド使っても大丈夫でしょうか?
もちろんランタイムライブラリの設定はマルチスレッドにしてます。
これでマルチスレッド使っても大丈夫でしょうか?
398: 0397 (ワッチョイ cb02-ctHD) 2023/07/02(日)04:46 ID:3Rb9PhMu0(2/2) AAS
ごめんなさい。自己解決しました。
399(1): (ワッチョイ 7f28-iz2R) 2023/07/02(日)08:22 ID:cqAPSm8d0(1/4) AAS
>>393
何言ってるかわからんkwsk
過去にCreateFile(L"漢字.txt", ...)で作ったファイルを、
WideCharToMultiByteとMultiByteToWideCharの第一引数に明示的にシフトJISのコードページ932を指定するだけで
CreateFileA(u8"漢字.txt", ...)で開けるようになったとしたら論理鉄器におかしい希ガス
400: (ワッチョイ c2fb-PY2F) 2023/07/02(日)10:08 ID:idCQJgQa0(1) AAS
環境依存の文字コードを取り扱うA系の関数でコードページ65001(UTF8)をサポートしたという話か?
「最近のリリースのWindows」とやらが何年ごろの話か知らんが
401: (オイコラミネオ MMe7-hRAP) 2023/07/02(日)10:21 ID:FpcWXL3uM(1) AAS
親切な人がいて上の方に書いてある
上下前次1-新書関写板覧索設栞歴
あと 601 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.045s