岩田です。

申し訳ありません。思いっきり文字化けしていました。
再送します。

ここから、

>>> DDSURFACEDESC ddsd = {sizeof(ddsd)};
>>>
>>> はDx5までは正常に機能しますが、Dx6 SDKにするとちゃんと初期化されず、
>>> サーフェースを作れません。(全部埋めればそんな事無いけど)
>>
>>もともと危険だと思います。
>
>ありゃ?そうでしたっけ?仕様ではたしか引数を一つに
>するだけでは最初のメンバしか初期化されず、
>あとはNULLが入るはずです。たぶん。
>
>>> 結局ZeroMemory使うしかないのかな?
>>
>>DDSURFACEDESC ddsd = { 0 };
>>ddsd.dwSize = sizeof(ddsd);
>>
>>で良いんじゃないですか?
>
>なぜかそれでもだめなんです。
>日ごろの行いが悪いせいかもしれません(^-^;
>
>多分コンパイラの仕様で(^^;、
>無名unionが入っている構造体で
>サイズの報告が不正な値になります
>(sizeof演算子ではなく、カウンタレジスタへ代入で)

カウンタレジスタは間違いですね。
rep sto*にならなくても間違いますし。

>VC4.0を使っています。
>
>struct
>{
>    char a;
>    int b;
>} Test1 = {1000};
>
>a = 0xe8;// 切り捨て
>b = 0;
>
>struct
>{
>    int a;
>    int b;
>} Test2 = {1000};
>
>a = 1000;
>b = 0;
>
>struct
>{
>    int a;
>    union
>    {
>      int b;
>    }// noname
>int c;
>} Test3 = {1000};
>
>a = 1000;
>他は不定
>
>struct
>{
>    int a;
>    union
>    {
>      int b;
>    }_b;
>    int c;
>} Test4 = {1000};
>
>a = 1000;
>b = 0;
>c = 0;

ここまで。

かわむら@DSTさん wrote.

>ただ、ソースからみて
>「「構造体の最初のメンバが{}で指定した値、他は0で初期化されている」
>って事を示そうとしている。」と仮定しています。

そうです。文字化けしてすみませんでした。

># 大ぼけの可能性は 99.89% ってとこでしょうか。

99.89%ってどこからきてるんだろ(^^;

高田@USAさん wrote.

>もしかして dwSize の前にメンバが追加されてるのですか?
># 手元にDx6SDKが無いので確認できません。

いいえ、そうではないですよ。
Dx5 SDKでは無名unionの位置が致命的にならなかっただけだと思います。

とにかく、無名unionの後のメンバーが
初期化されないといいたかったわけです。

でも、他のコンパイラで試したわけでもないので、、、