代码:
WINDOWPLACEMENT wplcmt = {sizeof(WINDOWPLACEMENT)};
看起来比这个干净多了:
WINDOWPLACEMENT wplcmt;
memset(&wplcmt, 0, sizeof(WINDOWPLACEMENT));
wplcmt.length = sizeof(WINDOWPLACEMENT);
这个东西的汇编输出也很好,对于更长的结构,MSVC甚至使用
memset
而不是xor eax, eax
和mov
。从标准的角度来看,这看起来也还不错。但我仍然担心边界情况,在结构体没有紧密打包时,比如#pragma pack(128)
,突然间Windows决定进行结构体的memcmp
时会发生什么。那么使用这种语法好还是不好呢? 使用这样的初始化方法是否是一个好习惯?