Предпочтительно / нормально ли использовать инициализацию структуры ({…}) вместо memset и т. Д.?

Код:

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 структуры.

Так это хорошо / плохо использовать такой синтаксис? Рекомендуется ли использовать такие инициализации?

9
задан Coder 13 December 2010 в 00:09
поделиться