2016-08-11 3 views
1

Что означает этот синтаксис в C?Синтаксис на языке C

EventEntry tTab[] = 
{ 
    {LEVEL, wLP0000FF00},       
    {0xFFFF, wL0000Ign}            
}; 

Я вижу только массив и нечто очень похожее на структуру. Итак, tTab - это массив EventEntries, не так ли?

+2

Да, tTab - это массив EventEntries. Период. –

ответ

1

Это объявление для массива EventEntry объектов, которые, вероятно, struct s с typedef (хотя они также могут быть массивами).

Этот синтаксис определяет массив из двух элементов. Поля исходного элемента инициализируются {LEVEL, wLP0000FF00}, а содержимое {0xFFFF, wL0000Ign} переходит во второй элемент.

Это старый синтаксис инициализации. Новый и улучшенный один позволяет определять поля инициализируются по имени:

EventEntry tTab[] = 
{ 
    {.field1 = LEVEL, .field2 = wLP0000FF00},       
    {.field1 = 0xFFFF, .field2 = wL0000Ign}            
}; 
1

Это означает, что tTab представляет собой массив EventEntry, что само по себе является struct с по меньшей мере двумя полями. И

{LEVEL, wLP0000FF00} 

является инициализатором tTab[0] и

{0xFFFF, wL0000Ign} 

является инициализатором tTab[1] Альтернативно EventEntry может быть псевдонимом для массива с, по меньшей мере, двумя элементами.

+1

Как вы знаете * 'EventEntry' имеет два« поля »(участников)? Я не вижу определения этого типа? – EOF

+0

@EOF Мой плохой. Благодаря! – Sergio

1

Да, tTab массив из двух EventEntry с.

{LEVEL, wLP0000FF00} Инициализирует tTab[0] и {0xFFFF, wL0000Ign} Инициализирует tTab[1].

Принимаются значения в LEVEL, wLP0000FF00 и wL0000Ign являются допустимыми значениями.

В этом контексте EventEntry может быть структурным типом или типом массива (или typedef для struct или массивом).

Типы LEVEL, wLP0000FF00, 0xFFFF и wL0000IGn должны быть совместимы с (то есть того же типа или неявное преобразование) типы любых полей или элементов EventEntry они используются для инициализации.

Смежные вопросы