Что означают двойные фигурные скобки, инициализирующие C-структуру?

В настоящее время я работаю с устаревшим кодом C ++ , успешно скомпилированным с помощью gcc 2.9.X.
Меня попросили перенести этот устаревший код на gcc 3.4.X. Большинство ошибок было легко исправлено, но именно эта меня озадачивает.

Контекст:

 struct TMessage 
   {
    THeader header;
    TData data;
   };

 struct THeader
   {
    TEnum myEnum;
    TBool validity;
   };

Что было сделано:

 const TMessage init = {{0}};

 /* Later in the code ... */
 TMessage message = init;

Мой вопрос (ы) :
Что означает оператор {{}}? Инициализирует ли первое поле (заголовок ) двоичный 0? Инициализирует ли первое поле первой структуры ( перечисление ) (литерал) 0?

Я получаю ошибку 3.4.6 недопустимое преобразование из 'int' в 'TEnum' , с одной или двумя парами фигурных скобок.

Как я могу установить в моей структуре набор нулей без использования memset?

Заранее спасибо.

18
задан Isaac Clarke 6 June 2011 в 11:12
поделиться