[過去ログ] C言語なら俺に聞け 163 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
454(1): (ワッチョイ be63-Vy5I) 2024/12/15(日)15:31 ID:wmU+aa0b0(1/2) AAS
そのプロシージャーを同一モジュール内lに記述して、
変数をスタティック宣言する、とか
455: (ワッチョイ 33b8-iztn) 2024/12/15(日)15:38 ID:jrfqO5QN0(3/6) AAS
>>454
そんなことできるんかよ知らなかった
{}内かつ、他のswitchと干渉しないところにベタ書きすればいいってことよね?
456(1): (ワッチョイ be63-Vy5I) 2024/12/15(日)15:45 ID:wmU+aa0b0(2/2) AAS
ちょっと違う様な気がする
そのファイル内にある全ての関数から参照出来る宣言です
スタティック宣言を調べて見て
457: (ワッチョイ 33b8-iztn) 2024/12/15(日)15:46 ID:jrfqO5QN0(4/6) AAS
>>456
ごめん、スタティックはわかってる
モジュール内への記述の方
言葉足らずですまん
458(1): (ワッチョイ 33b8-iztn) 2024/12/15(日)16:32 ID:jrfqO5QN0(5/6) AAS
調べてみたけど関数内に別の関数の処理はかけないっぽい?
とりあえず自前のソース書き換えてみたけどC2275が出てしまう
459(1): (ブーイモ MM8a-1w4P) 2024/12/15(日)16:54 ID:Wjdp3H7kM(1) AAS
モジュールとかプロシージャはc言語の用語ではないよ
誤解を生むからなるべく正しい用語で
あるいはソース書け
460(1): (ワッチョイ a301-2Zui) 2024/12/15(日)17:04 ID:5Q71kCB70(1) AAS
Cで作ったソフトにアイコンをつける方法ありますか?
コンパイラはmingw
461: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0f32-782k) 2024/12/15(日)17:07 ID:SAQ/jMe00(1/2) AAS
>>460
リソーススクリプトを書いて windres コマンドでコンパイルしてリンク。
462(1): (ワッチョイ 3338-UX28) 2024/12/15(日)17:11 ID:jrfqO5QN0(6/6) AAS
>>459
ウィンドウプロシージャでおk?
463(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 0f32-782k) 2024/12/15(日)17:25 ID:SAQ/jMe00(2/2) AAS
>>462
windows の話?
ウィンドウプロシージャにデータを結びつけたいのなら必要なのは SetProp じゃないかな。
464: (ワッチョイ 4a12-O1Z7) 2024/12/15(日)20:08 ID:7bvd8wX+0(1) AAS
>>458
よくある質問に書いてあんだからそれを読めよ
465: (ワッチョイ 4aa2-SaU4) 2024/12/15(日)21:32 ID:8K4C8OcF0(1) AAS
2つ目のプロシージャってなんやねん
466(1): (オッペケ Srb3-aNNs) 2024/12/16(月)07:18 ID:Y4GCxOlhr(1) AAS
今北
何のデータかわからんが、だれに属しているデータなのやら
「全然関係ないところ」には、置かないほうがいいぞ少なくとも
467(1): (ワッチョイ 3369-iztn) 2024/12/16(月)18:03 ID:o/MtQx1A0(1/4) AAS
下記のコードのsizeof(buf)/sizeof(TCHAR)ってなんの意味があるの?
ただのsizeof(buf)じゃだめ?
static int num;
TCHAR buf[8];
stprintf_s(buf,sizeof(buf)/sizeof(TCHAR), TEXT("%d"), num);
468: (ワッチョイ 3369-iztn) 2024/12/16(月)18:17 ID:o/MtQx1A0(2/4) AAS
>>463
なるほどね、それで行けるかありがとう
469: (ワッチョイ 3369-iztn) 2024/12/16(月)18:18 ID:o/MtQx1A0(3/4) AAS
>>466
自分の知識だと外に置くくらいしか思いつかんかった
470: (ワッチョイ 666d-1w4P) 2024/12/16(月)18:20 ID:/03Ox5VG0(1/2) AAS
TCHARは_UNICODEのマクロの定義の有無によって16bitまたは8bitになる
471: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0f32-aNNs) 2024/12/16(月)18:26 ID:26oXJeTE0(1/2) AAS
>>467
> ただのsizeof(buf)じゃだめ?
だめ。
TCHAR はコンパイル時に ANSI モードか Unicode モードかで定義が切り替わる。
ANSI モードのときは char で Unicode モードのときは WCHAR と同じ。
_stprintf_s も ANSI モードのときは sprintf_s に置き換えられて Unicode モードのときは swprintf_s になる。
swprintf_s のときの第一引数は文字数 (この場合は UTF-16 でのコードポイントの数) なのでバイト数である sizeof(buf) を渡しても駄目。
ANSI モードでしかコンパイルしないのであれば別に割らなくても大丈夫だけど、それならそもそも切り替えを前提としたマクロを使う必要ないしな……。
472(2): (ワッチョイ 3369-iztn) 2024/12/16(月)22:06 ID:o/MtQx1A0(4/4) AAS
Unicodeになるとなんで割る必要が出てくるのかいまいち掴めないなあ
BuffのサイズをTCHARのサイズで割ってどうしてサイズが出せるの?
473: (ワッチョイ 666d-1w4P) 2024/12/16(月)22:41 ID:/03Ox5VG0(2/2) AAS
>>472
ごちゃごちゃ考えてないで
とっととデバッガ使って値を確認しな
474: はちみつ餃子◆8X2XSCHEME (ワッチョイ 0f32-782k) 2024/12/16(月)22:48 ID:26oXJeTE0(2/2) AAS
配列の大きさを得るために配列のバイト数を配列要素のバイト数で割るのはごく一般的なイディオムなので何がわからないのかわからない。
475: (JP 0Hff-K+1m) 2024/12/16(月)22:57 ID:Q04ymynwH(1) AAS
これらのアイデアを実装するために取り組んでいる中で、EchoAPIが設計ワークフローを本当に効率化してくれた
476(1): 2024/12/17(火)00:02 ID:KLd2kDAJ0(1/2) AAS
>>472
Unicodeの場合、2バイトで1文字を表現
?????????????????? で9文字、18バイト
ANSIの場合、
????????? で9文字、9バイト
> sizeof(buf)/sizeof(TCHAR)
sizeof(buf)が指すのはバイト数、Unicodeなら18、ANSIなら9
sizeof(TCHAR)が指すのは1文字のバイト数、Unicodeなら2、ANSIなら1
そして stprintf_s の引数 sizeOfBufferはバイト数ではなく「格納する最大文字数」であること
引数がバイト数ならsizeof(buf)でいいけど、引数が文字数を求めているならsizeof(buf)ではおかしくなる
上の例で言えば、Unicodeは18バイト9文字で本来は9とするところを18と指定してしまうことになる
すると関数側はバッファが18文字分(バイトで32バイト)あると勘違いするわけでバッファオーバーフローを起こす
sizeof(buf)/sizeof(TCHAR) は18バイトの領域があって、それを1文字のバイト数で割って「9文字」ということ
477: 2024/12/17(火)00:05 ID:KLd2kDAJ0(2/2) AAS
丸付き数字自体が1文字1バイトって意味じゃないからな
内部表現を表すために使用しただけで数字がx文字目として見て
478: (アウアウエー Sae2-N2kD) 2024/12/17(火)10:25 ID:hEkGaD6xa(1) AAS
_countof()
479: (ワッチョイ 666d-1w4P) 2024/12/17(火)12:09 ID:2fZmW/080(1) AAS
いやvc++使ってんならstd::sizeでいい
480(1): (ササクッテロロ Spb3-DtHK) 2024/12/17(火)12:36 ID:5c2Y3gwMp(1) AAS
C言語スレだろw
481: (ワッチョイ be63-Vy5I) 2024/12/17(火)12:49 ID:6SQ8uEd20(1) AAS
そこは禁欲しましょう
482(1): (ワッチョイ 33ef-iztn) 2024/12/18(水)01:25 ID:ILkVh3nA0(1/2) AAS
>>476
朝わかりやすいね
でもANSIって1バイトと2バイト混合できるよね?どうなっちゃうんだろう
483(2): 2024/12/18(水)02:49 ID:NqM0X43U0(1) AAS
>>482
ANSIはバイト=文字数
そもそも論理的な文字数じゃなくて処理単位での文字数ね
だから strlen("あいう") = 6
strlen("123あ67い0") = 10 // 数字は半角(1バイト)、ひらがなは全角(2バイト)
Unicodeの場合でも正しい文字数になるわけじゃない、サロゲートペアの場合に文字数は2(4バイト)になる
上下前次1-新書関写板覧索設栞歴
あと 519 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.016s