C言語なら俺に聞け 163

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
垢版 |
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2024/11/25(月) 09:22:18.85ID:EAdMpn4b0
>>372-373
いいえ。
シフト演算の段階で既に未定義を踏んでいるので型変換は関係ないです。
6.5.7 をご覧ください。
375デフォルトの名無しさん (ワッチョイ 9fc2-ZGYG)
垢版 |
2024/11/25(月) 09:32:20.82ID:SsaYg1Am0
科学 + ンニュース 5ch

保守派もリベラル派も「自分の政治的信念に合致したニュース」を信じやすいという研究結果 [すらいむ★]
https://itest.5ch.net/egg/test/read.cgi/scienceplus/1732447647

コメントも含めて読むと
陰謀論が収まら無い理由が判明する
2024/11/25(月) 09:46:02.42ID:NtppUMW10
なるほど、32bitのみでやるときも1u<<31にしないといけないのか
2024/11/25(月) 10:29:04.22ID:G+C3M6QHp
なぜ浮動小数型をシフトしようとした?
378デフォルトの名無しさん (ワッチョイ bfdf-FO3g)
垢版 |
2024/11/25(月) 13:39:22.46ID:YjGMGS1I0
>> 374 なるほど,そっちで既に未定義だったか.

6.5.7
ビット単位のシフト演算子
構文規則
シフト式:
加減式
シフト式 << 加減式
シフト式 >> 加減式
制約 各オペランドは,整数型をもたなければならない。
意味規則 整数拡張を各オペランドに適用する。結果の型は,左オペランドを拡張した後の型とする。右オペランドの値が負であるか,又は拡張した左オペランドの幅以上の場合,その動作は,未定義とする。
E1<<E2の結果は,E1をE2ビット分左にシフトした値とする。空いたビットには0を詰める。E1が符号無し整数型をもつ場合,結果の値は,E1×2E2の,結果の型で表現可能な最大値より1大きい値を法と
する剰余とする。E1が符号付き整数型と非負の値をもち,E1×2E2が結果の型で表現可能である場合,それが結果の値となる。それ以外の場合,その動作は未定義とする。

E1>>E2の結果は,E1をE2ビット分右にシフトした値とする。E1が符号無し整数型をもつ場合,又はE1が符号付き整数型と非負の値をもつ場合,結果の値は,E1/2E2の商の整数部分とする。E1が符号付き整数型と負の値をもつ場合,結果の値は処理系定義とする。
379デフォルトの名無しさん (JP 0Hdf-6m00)
垢版 |
2024/11/26(火) 22:12:07.51ID:JxXv+doZH
VS CodeでEchoAPIを使うと、ツールを切り替えずにAPIテストをシームレスに管理できるようになったよ!
380デフォルトの名無しさん (ワッチョイ d761-7ouQ)
垢版 |
2024/11/29(金) 15:48:48.81ID:QX01Nly20
以下のサンプルプログラムが理解できず困っています。
該当プログラムは、コマンドラインから読み込んだBMPの色データを矩形として並べていくというものの一部を抜粋しています。

以下のfor文は
カラーテーブルの数を取得する→
ブラシを設定する→
先頭の構造体メンバからiCount先の構造体メンバを指定→
iCountにインクリメント

という流れだと考えられると思うのですが、1に対し1カラービット分左シフトとなっている部分がどういったロジックによって数の取得が実現されているのかわかりません。
質問は2点あり、どのようにしてテーブル数を取得しているのか、コードの理解は正しいのかについてお答えしていただければと思います。


サンプルコード

#include <windows.h>

BITMAPFILEHEADER bmpFileHeader;
BITMAPCOREHEADER bmpCoreHeader;
RGBTRIPLE *prtColor;

for ( ; iCount < (1 << bmpCoreHeader.bcBitCount) ; iCount++) {
SelectObject(hdc , CreateSolidBrush(
RGB( (prtColor + iCount)->rgbtRed ,
(prtColor + iCount)->rgbtGreen ,
(prtColor + iCount)->rgbtBlue
))
2024/11/29(金) 16:12:14.82ID:YWo8X0edd
bcBitCountはピクセルあたりビット数で1,4,8,24だそう
nビットで表せる値は2^n通りで、これは左シフト1<<nで計算できる
382デフォルトの名無しさん (ワッチョイ ff76-J7R8)
垢版 |
2024/11/29(金) 23:08:43.43ID:5pZynS2U0
# 質問されていない部分だけど…
iCountと比較する値はループ内で変動しないよね?
だったら毎回計算せずにループ前で計算して別変数に記憶しておくほうがよくないかい?
2024/11/30(土) 00:28:19.69ID:b6kb1MmL0
今時のコンパイラは十分賢いので気にすることない
2024/11/30(土) 00:37:35.21ID:VtvuoLT+0
ユーザーの犯したバグも直してくれるとありがたいなあ
2024/11/30(土) 00:47:56.34ID:k7UOR52k0
シフトでも掛算でもどっちでもいいけど
質問者のように読んで悩むのは問題
コメント書いておけ

ループ内毎回計算か最適化でループ外に出したかは
コンパイル後の逆アセンブルとかで確認するの?
だったら間違いないようにループ外に出す方が良い癖にもなると思うのだが
2024/11/30(土) 09:43:24.89ID:54hbVEvk0
380の知能では最適化したつもりが新たなバグを埋め込む事になるかもしれん
自身の身の丈に合ったコードにしとけ
未来の自分が賢くなってる事を信じて
387デフォルトの名無しさん (アウアウエー Sadf-wjfe)
垢版 |
2024/11/30(土) 09:49:47.60ID:l0dFcapba
#include <windows.h>

BITMAPFILEHEADER bmpFileHeader;
BITMAPCOREHEADER bmpCoreHeader;
RGBTRIPLE *prtColor;

この間に何も描かれてないのは投稿者が勝手に削除したの?元から無いの?

for ( ; iCount < (1 << bmpCoreHeader.bcBitCount) ; iCount++) {
SelectObject(hdc , CreateSolidBrush(
RGB( (prtColor + iCount)->rgbtRed ,
(prtColor + iCount)->rgbtGreen ,
(prtColor + iCount)->rgbtBlue
))
2024/11/30(土) 11:23:36.84ID:k7UOR52k0
なんでこんなに読めないのか理由がわかった
変数名や字下げや「,」前のブランクなど
論理そのもの以前にコーディングの美しさが全然無い
2024/11/30(土) 11:53:49.47ID:VtvuoLT+0
この掲示板書き込むと、スペースやタブは消されちゃうんだよな。
だから綺麗に整形した状態でソース載せたいなら、
全角スペース使うしかない。
あるいはソース公開出来るサイトにアップロードして、
そのリンクを張るなりする。
そういうサイトは、>>1 に書いてある。
2024/11/30(土) 12:18:13.55ID:tlb45efI0
美しさとか言い出したら自転車置き場の議論なるからやめとけ
2024/11/30(土) 12:21:38.32ID:VtvuoLT+0
https://mevius.5ch.net/test/read.cgi/tech/1402617355/

色々試し書きしたいなら、テストスレがあるから、そこでやって
2024/11/30(土) 15:56:34.50ID:k7UOR52k0
python自体のスタイルPEP8に加えてCについてのPEP7も整備されているのに
https://peps.python.org/pep-0007/
あえてそれに背くコーディングをする理由が見つからない
GNUのへんてこコーディングも規約文章は整備されている
2024/11/30(土) 16:28:54.09ID:54hbVEvk0
他人のふんどしででかい顔のpythonは存在自体がきしょくってぇ
そんなもん使ってる奴の押し付けに従う気にはとてもなれないって感じぃ
2024/11/30(土) 16:41:54.15ID:VBYh6hCP0
自分の使ってるテキストエディタにコピペして整形を実行したら一瞬でどうとでもなるんだからどうでもいいだろ。
2024/11/30(土) 17:05:29.66ID:k7UOR52k0
func(a , b , c );
func(a, b, c);
上から下への変換はインデントとは異なりやっかい
2024/11/30(土) 17:22:56.29ID:VBYh6hCP0
>>395
どんな古臭いフォーマッタを使ってるんだ?
397デフォルトの名無しさん (ワッチョイ d761-7ouQ)
垢版 |
2024/11/30(土) 17:25:06.78ID:9y3I76FS0
>>381
シフト演算を行った場合、10進数の1に対して乗算を行うわけではなく、2進数に対して行うという認識で良いでしょうか?
すなわち、この場合を10進数で表すと、1ではなくて2に対して、1,4,8,24、のいずれかを冪乗し、何通りの色の組み合わせがあるのかを確かめることができるというわけですね。

>>382
コピペしただけなのでとりあえず理解をと思い書き込みました。自身で書くときはそうしたほうがわかりやすいかもしれませんね。
398デフォルトの名無しさん (ワッチョイ d761-7ouQ)
垢版 |
2024/11/30(土) 17:25:18.86ID:9y3I76FS0
>>385
少し別添えで記述されてはいたのですが、それだけでは理解に至らなく書き込みした次第です。


>>386
そうなんです、私も身の丈に合うコードにしたいのは山々なのです。
ところで、初級者向けのGUI作成の手引書を教えていだだけませんか?もちろん、ここ5年以内の環境で

>>387
勝手ながら削除しています。素人考えなのは承知です。
仕事柄、利権や法にはうるさくあらねばなりませんので、リスク回避です。
2024/11/30(土) 18:05:05.65ID:54hbVEvk0
Cは知っといた方がいいけど
GUIをやりたいならこのスレに居るのは時間の無駄なんだが
そのBITMAPなんちゃらも以下の環境では気にしなくていい

GUI開発おすすめ言語
iOS macOSアプリ Swift、Objective-C
Androidアプリ Kotlin、Java
Webアプリ Kotlin、Java
Windows C#
なおWeb系はHTML/CSS、JavaScript/TypeScriptは必須と思って頂きたい
2024/11/30(土) 18:12:39.34ID:VtvuoLT+0
Windowsの内部構造を知るのは時間の無駄なのか
2024/11/30(土) 18:17:30.16ID:54hbVEvk0
BITMAPなんちゃらに詳しくなった所でWindowsの内部構造を知ったことにはならないんだがぁ?
現行Windows11の内部構造なんてきしょすぎてそもそも知りたくもないわ
2024/11/30(土) 18:33:02.64ID:VtvuoLT+0
そういう人はソフト開発に向いてないよ
2024/11/30(土) 18:37:21.74ID:k7UOR52k0
これだけ見て分かるわけ無いよ
max = 1 << bmpCoreHeader.bcBitCount;
for (iCountの初期値が無いよ、普通0からだよね; iCount < max; iCount++) {
  // テーブルRGB値をブラシの色に設定?
  brush = CreateSolidBrush(...);
  // RGBで色指定したブラシで塗る?hdcが変わらんようだが何回も呼ぶ意味があるの?
  SelectObject(hdc, brush);
  // これ以降があるのか…
}
2024/11/30(土) 18:53:59.75ID:k7UOR52k0
bmpCoreHeader.bcBitCount の範囲チェックが必要そう
uint64_t max;
max = 1 << 64; // max == 0x8000000000000000 で意味がありそう
max = 1 << 65; // これ64bit整数の範囲超えているよね、プロセッサ依存の値になる予感
2024/11/30(土) 19:19:34.08ID:k7UOR52k0
64bitシフトでも溢れた
これ難しいね
uint64_t seed, max
seed = 1;
max = seed << 63; // 0x80000000 で期待どおり
max = 1ull << 63; // 0x80000000 これも期待どおり
max = 1 << 63; // 即値1のレジスタ範囲が足りない?
max = 1 << 63; // 即値1だと32bitなのか
2024/11/30(土) 19:23:29.64ID:ePDG6JlId
カラーパレットを使うのは1,4,8って決まってるんだが
2024/11/30(土) 19:52:07.91ID:exhSsXMya
トリプルポインタが理解不能です。
2024/11/30(土) 20:06:07.06ID:k7UOR52k0
1, 4, 8以外のエラー処理が無ければ手抜きプログラムだよ
2024/11/30(土) 21:42:40.50ID:54hbVEvk0
これが俗に言う無能な働き者かぁ…
2024/11/30(土) 22:31:58.70ID:cI+uLRSv0
粘着キショい
2024/12/01(日) 11:20:07.96ID:HNZEO20Lp
>>407
理解してる俺でもデバッグん時に面倒だから使わない
2024/12/01(日) 11:21:42.42ID:+XByeWPN0
理解するな、感じるんだ!
2024/12/02(月) 07:39:26.68ID:UIzNnBqa0
スマホ世代もCってるなんて頼もしい限りだな
https://pbs.twimg.com/media/GdrvuRtWgAA1DOe.jpg
2024/12/02(月) 10:00:18.95ID:cKcAe5N2p
なんだその数字w
2024/12/02(月) 12:52:17.82ID:5A4jg9rQ0
>>413
なんていうアプリで書いてるんだろ?
2024/12/02(月) 16:27:58.74ID:sZTu4RGZ0
>>415
アマゾンにあった
「 モバイル C { C/C++ コンパイラ } 」だって
¥1,546
/dp/B00MFXHPBW
2024/12/02(月) 16:44:39.99ID:mvW+hvRB0
無料版もあるみたいだ。違いは分からなかった。

/dp/B01CEZQGX8
418デフォルトの名無しさん (JP 0Haa-DO+T)
垢版 |
2024/12/04(水) 22:39:06.18ID:QlqtMMMjH?2BP(1000)

なんかEchoAPI、さまざまなAPIシナリオをモックするのに役立って、フロントエンドの作業を独立して行えるようになるよ
2024/12/05(木) 08:13:19.15ID:XxVPE2wx0
前はAIDEってのもあったような
自分も購入済みだったけどストアから消えた
2024/12/05(木) 08:18:47.93ID:GShkk8fF0
>>418ならただの宣伝マルチポストなのでさっさとNGしておくように
2024/12/08(日) 09:05:36.00ID:NBQmwlWPa
char text[32] = "count="
sptintf(text, "%s%d", text, 100);


↑これって問題ない? 
2024/12/08(日) 09:31:43.48ID:ukMyBbJC0
オーバーフローを懸念。
2024/12/08(日) 12:39:42.22ID:xllqP0wk0
snprintf
2024/12/08(日) 13:05:39.35ID:6js3fqHP0
>>421
sprintf のことだよね?
問題はある。
領域が重なるオブジェクト間でコピーが行われるときの動作は未定義とするという仕様になってる。

それと関数シグネチャを見ればわかるが引数のところに restrict ってついてるでしょ。
その性質上、他の引数がこれと領域が被ってはいけないというサインだ。
まあ引数を使わない関数であれば restrict 修飾されたポインタが指す領域がかぶってもただちに違反ではないが、常識的には渡す以上は使われるものと想定すべきだよね。
2024/12/08(日) 16:35:15.95ID:iOnFgjmu0
>>421
問題ありだ。1行目末尾にセミコロンがないじゃないか
あと、学校の宿題の答えをこんなところで聞いちゃいかんぞ
2024/12/08(日) 20:16:31.35ID:rVbvHhAN0
最近の小学校ではこんな宿題出るのか
末恐ろしいと言うか、頼もしいというか
2024/12/09(月) 01:07:25.53ID:ToKnc/9y0
コンピュータの授業とか普通にあるんだろ?今って
俺からすると羨ましい限りだわ
でもダンスの授業はいらん
2024/12/09(月) 01:41:05.76ID:izrgU9L90
元々芸術科目や体育は面倒な存在だし
ダンスはそれらが合わさって一見最強に見えるだけで専門科目に比べれば実は大した内容じゃない
子供は加減の付け方を知らないから物凄い壁に見えるんだろう
2024/12/09(月) 01:48:04.91ID:hHB0rnnr0
1990 年代頃なら中学校でコンピュータの授業はあったがプログラミングがちょっとでも出来るようになるほどではなく使い方に慣れるという程度だったと思う。
ただ、学校に設備や資料はあったから興味があれは詳しくなれるチャンスはあった。
設備をどのくらい解放するかは学校の体制によるだろうけど。
430デフォルトの名無しさん (ワッチョイ dfad-pQ4B)
垢版 |
2024/12/09(月) 10:00:06.94ID:hbK9EAUD0
>>427
踊りながら英語でコンピュータを使え
431デフォルトの名無しさん (ワッチョイ dff4-tB0+)
垢版 |
2024/12/09(月) 13:23:27.80ID:wWCmXoxS0
科学 + 5ch

【AI】AIはわずか2時間の対話で人間の性格をコピーできる [すらいむ★]
https://egg.5ch.net/test/read.cgi/scienceplus/1733576027/

コメントに面白いことが書かれている
2024/12/09(月) 13:52:01.90ID:IOR7vjsa0
2時間で初等教育から大学院レベルまで学習完了したら
人間要らなくなりそうだな
2024/12/09(月) 18:02:12.33ID:rC3URswf0
>>429
たしか教師がクソすぎて失敗したんだよなw
434デフォルトの名無しさん (ワッチョイ dfad-pQ4B)
垢版 |
2024/12/09(月) 19:36:33.91ID:hbK9EAUD0
やがて全ての仕事がAIに直結されたロボットによって置き換えられ、人類絶滅。
地球はAIのみが存在する世界になり、真空でもそのまま動くロボットが宇宙征服。
435デフォルトの名無しさん (ワッチョイ 6761-/Pym)
垢版 |
2024/12/09(月) 21:34:01.67ID:OpvCpgOo0
チェックボックスとかラジオボタンの状態を保存したいんだけどなんて調べればええんすの?
現状ウィンドウを破棄する前にコントロールの内容を取得して状態に合わせた変数を初期化ファイルに保存、再起動時に変数に対応した状態に再設定するみたいなのしか思いつかん
冗長になって見づらいだろうし代替案を知りたい
2024/12/09(月) 21:38:21.41ID:IOR7vjsa0
その通りで良いと思います
437デフォルトの名無しさん (JP 0H9f-uiwC)
垢版 |
2024/12/09(月) 21:39:24.19ID:XfZ/p96kH?2BP(1000)

www最近、EchoAPIを使い始めたところ、効率的なAPIテストツールを提供してくれるおかげで、開発プロセスが向上した!
438デフォルトの名無しさん (ワッチョイ 6761-/Pym)
垢版 |
2024/12/10(火) 09:40:44.51ID:9vz9QL6n0
>>436
これで行くしかないのか
2024/12/10(火) 10:01:08.05ID:gzrtf0Gl0
対応表をだーっと並べる、control_state_read_and_write(bool is_write, ...) みたいな関数を置く、など
割り切ってしまえば工夫のしがいはある

ただ、そのときはよくても、あとになってみたら黒魔術でしかなかったりする
愚直なのもいいぞ
2024/12/10(火) 17:10:24.87ID:TsXGEoU20
>>435
何がどう"冗長になって見づらい"のか?
2024/12/10(火) 19:03:49.02ID:ruXLR+AW0
属人化だとか 尻アナルライブだとかあったような
2024/12/10(火) 19:06:39.85ID:RLBTgK1d0
身体に刻む学習方法
2024/12/10(火) 21:11:22.07ID:RajTC0DHa
>>422-424
ありがとん
2024/12/10(火) 21:43:52.59ID:RajTC0DHa
これでなんか機能した

TCHAR buf[255];
this->GetWindowText(title, 255);

int len = _tcsclen(buf);
_sntprintf(buf + len, 255, " %d", uiWindowCount);

this->SetWindowText(buf);
2024/12/10(火) 21:51:03.48ID:ruXLR+AW0
this->
ナニコレ
もしかしてC言語スレでC++使えるぞあぴーるですか!
すげー
2024/12/10(火) 22:13:12.06ID:ujXLUuNp0
>>443-444
もし C++ の話なら上述 (>>424) の restrict の説明が役に立たない。
C++ に restrict は無いから。
2024/12/11(水) 07:46:28.90ID:P/b6xwK7a
API自体はC言語なんでそこらへんはスルーでお願い
2024/12/11(水) 14:36:37.44ID:fIut9/tx0
>>447
C の snprintf と C++ の snprintf は違うという話をしてるんやが
(最終的に同じものが呼び出される実装の場合はあるにしても。)
449デフォルトの名無しさん (JP 0H9f-uiwC)
垢版 |
2024/12/11(水) 20:35:15.94ID:GrIf7glWH?2BP(1000)

最近のRESTful APIについての議論に触発されてEchoAPIを試してみたところ、エンドポイントのシミュレーションツールがテストプロセスを非常に効率化してくれました。
2024/12/11(水) 23:04:37.50ID:xKzgcnaC0
MSは採用していないのかな?
なんでこんなにバグが多いんだろう
451デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:13:40.89ID:jrfqO5QN0
1つめのプロシージャで宣言した変数を2つ目のプロシージャで使うって頑張れば可能?
それともグローバル変数宣言したほうがいい?
2024/12/15(日) 15:17:17.63ID:Vq+PRAKz0
引数で渡せばいいんじゃね
453デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:23:28.37ID:jrfqO5QN0
>>452
それも考えたんだけど、プロシージャ作るときライブラリ側が指定した引数以外渡せないんじゃない?
2024/12/15(日) 15:31:40.27ID:wmU+aa0b0
そのプロシージャーを同一モジュール内lに記述して、
変数をスタティック宣言する、とか
455デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:38:22.49ID:jrfqO5QN0
>>454
そんなことできるんかよ知らなかった
{}内かつ、他のswitchと干渉しないところにベタ書きすればいいってことよね?
2024/12/15(日) 15:45:22.53ID:wmU+aa0b0
ちょっと違う様な気がする
そのファイル内にある全ての関数から参照出来る宣言です
スタティック宣言を調べて見て
457デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 15:46:49.05ID:jrfqO5QN0
>>456
ごめん、スタティックはわかってる
モジュール内への記述の方
言葉足らずですまん
458デフォルトの名無しさん (ワッチョイ 33b8-iztn)
垢版 |
2024/12/15(日) 16:32:34.62ID:jrfqO5QN0
調べてみたけど関数内に別の関数の処理はかけないっぽい?
とりあえず自前のソース書き換えてみたけどC2275が出てしまう
2024/12/15(日) 16:54:06.72ID:Wjdp3H7kM
モジュールとかプロシージャはc言語の用語ではないよ
誤解を生むからなるべく正しい用語で
あるいはソース書け
460デフォルトの名無しさん (ワッチョイ a301-2Zui)
垢版 |
2024/12/15(日) 17:04:08.92ID:5Q71kCB70
Cで作ったソフトにアイコンをつける方法ありますか?
コンパイラはmingw
2024/12/15(日) 17:07:42.25ID:SAQ/jMe00
>>460
リソーススクリプトを書いて windres コマンドでコンパイルしてリンク。
462デフォルトの名無しさん (ワッチョイ 3338-UX28)
垢版 |
2024/12/15(日) 17:11:49.15ID:jrfqO5QN0
>>459
ウィンドウプロシージャでおk?
2024/12/15(日) 17:25:02.46ID:SAQ/jMe00
>>462
windows の話?
ウィンドウプロシージャにデータを結びつけたいのなら必要なのは SetProp じゃないかな。
464デフォルトの名無しさん (ワッチョイ 4a12-O1Z7)
垢版 |
2024/12/15(日) 20:08:51.95ID:7bvd8wX+0
>>458
よくある質問に書いてあんだからそれを読めよ
2024/12/15(日) 21:32:26.28ID:8K4C8OcF0
2つ目のプロシージャってなんやねん
2024/12/16(月) 07:18:55.27ID:Y4GCxOlhr
今北
何のデータかわからんが、だれに属しているデータなのやら

「全然関係ないところ」には、置かないほうがいいぞ少なくとも
467デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 18:03:11.25ID:o/MtQx1A0
下記のコードの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:40.10ID:o/MtQx1A0
>>463
なるほどね、それで行けるかありがとう
469デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 18:18:31.53ID:o/MtQx1A0
>>466
自分の知識だと外に置くくらいしか思いつかんかった
2024/12/16(月) 18:20:09.41ID:/03Ox5VG0
TCHARは_UNICODEのマクロの定義の有無によって16bitまたは8bitになる
2024/12/16(月) 18:26:34.86ID:26oXJeTE0
>>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デフォルトの名無しさん (ワッチョイ 3369-iztn)
垢版 |
2024/12/16(月) 22:06:23.18ID:o/MtQx1A0
Unicodeになるとなんで割る必要が出てくるのかいまいち掴めないなあ
BuffのサイズをTCHARのサイズで割ってどうしてサイズが出せるの?
2024/12/16(月) 22:41:01.10ID:/03Ox5VG0
>>472
ごちゃごちゃ考えてないで
とっととデバッガ使って値を確認しな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況