void someFunc()
{
msghdr msg = {}; // <<< All members zero-initialized
}
Уровень предупреждения g ++ -Wextra
ИМХО не очень полезен.
Код, который у вас есть, формально также подходит для "C struct", в стандарте, известном как POD (Plain Old Data). Но ваш код явно инициализирует первый член с 0. Это не обязательно будет работать для агрегата, который не является POD, например с std::string
в качестве первого члена, тогда как чистый {}
будет работать и для этого.
Попутно, часто POD, такой как тот, с которым вы имеете дело, имеет количество байтов в качестве первого члена, а затем вы можете сделать как & hellip;
void foo()
{
SomePODStruct o = {sizeof(o)}; // The other members zero-initialized.
}
Возможно, добавьте STATIC_ASSERT
, чтобы элемент подсчета байтов был первым (со смещением 0).
Приветствия и hth.,