Код:
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 структуры.
Так это хорошо / плохо использовать такой синтаксис? Рекомендуется ли использовать такие инициализации?