DXライブラリでプログラミングしております。
ただ構造体で作ったものを初期化しようと思っているのですが
初期化されません・
// メッセージ用
typedef struct{
int MessCnt; // 表示速度
int StrNum; // 文字の切り取り位置
}MESSAGE;
MESSAGE Mess;
Mess.Str = 2;
//Mess.StrNum = 0;
ZeroMemory( &Mess, sizeof(&Mess) );
この後Mess.strを表示すると2が入っております。
//Mess.StrNum = 0;
のコメントを外さないとStrNumが0になりません。
使い方が間違えているのでしょうか?
ZeroMemoryが使えない?
Re:ZeroMemoryが使えない?
> Mess.Str = 2;
> この後Mess.strを表示すると2が入っております。
Strおよびstrとは?
DXライブラリとのことですが、C++ではなく別の言語にバインディングしているのでしょうか?
> この後Mess.strを表示すると2が入っております。
Strおよびstrとは?
DXライブラリとのことですが、C++ではなく別の言語にバインディングしているのでしょうか?
Re:ZeroMemoryが使えない?
> DXライブラリというよりはC言語の予約語でしたね。
意味がわかりません。
> Mess.StrNumのことです。
だとすると...
> ZeroMemory( &Mess, sizeof(&Mess) );
↑上の部分が間違っています。
sizeof(&Mess)ですので、ポインタのサイズ分しかゼロクリアされません。
この部分も転記ミスがなければの話ですが...
意味がわかりません。
> Mess.StrNumのことです。
だとすると...
> ZeroMemory( &Mess, sizeof(&Mess) );
↑上の部分が間違っています。
sizeof(&Mess)ですので、ポインタのサイズ分しかゼロクリアされません。
この部分も転記ミスがなければの話ですが...
Re:ZeroMemoryが使えない?
>>山口さん
[color=gray>>下記で出来たのですがあっているのでしょうか?[/color]
正しい動作になっているかどうかは、簡単なサンプルを作って出力してみればすぐに解ると思います。
あるいはデバッガをお使いになるとかですね。
[color=gray>>ただ構造体で作ったものを初期化しようと思っているのですが[/color]
ただ単にStrNumを初期化したいのであれば、Mess.StrNum = 0; でも構わないと思いますが
構造体の中身全部を言っているのであれば
ZeroMemory(&Mess, sizeof(Mess));
あるいは、ZeroMemory(&Mess, sizeof(MESSAGE));
で大丈夫だと思います。
ZeroMemoryの正体はmemset関数なので、解らなければそちらも調べてみてください。
[color=gray>>下記で出来たのですがあっているのでしょうか?[/color]
正しい動作になっているかどうかは、簡単なサンプルを作って出力してみればすぐに解ると思います。
あるいはデバッガをお使いになるとかですね。
[color=gray>>ただ構造体で作ったものを初期化しようと思っているのですが[/color]
ただ単にStrNumを初期化したいのであれば、Mess.StrNum = 0; でも構わないと思いますが
構造体の中身全部を言っているのであれば
ZeroMemory(&Mess, sizeof(Mess));
あるいは、ZeroMemory(&Mess, sizeof(MESSAGE));
で大丈夫だと思います。
ZeroMemoryの正体はmemset関数なので、解らなければそちらも調べてみてください。