2016-08-11 13 views
1

Cのこの構文は何を意味しますか?C言語での構文

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

私は単なる構造体と非常に似たものを見ています。だから、tTabはEventEntriesの配列ではありませんか?

+2

はい、tTabはEventEntriesの配列です。期間。 –

答えて

1

EventEntryオブジェクトの配列の宣言です。おそらくstructで、typedefです(配列でも構いませんが)。

この構文は2つの項目の配列を定義します。最初の項目のフィールドは{LEVEL, wLP0000FF00}で初期化され、内容は{0xFFFF, wL0000Ign}で2番目の要素に入ります。

これは古い初期化構文です。新規および名前で初期化されるフィールドを指定することができます1を改善:

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

これは、tTabEventEntryの配列であり、それ自体が少なくとも2つのフィールドを持つstructであることを意味します。そして

{LEVEL, wLP0000FF00} 

tTab[0]の初期化子であり、そして

{0xFFFF, wL0000Ign} 

tTab[1]あるいはEventEntryの初期化子では、少なくとも2つの要素を持つアレイの別名であってもよいです。

+1

* 'EventEntry'には2つの"フィールド "(メンバー)がありますか?私はそのタイプの定義を見ませんか? – EOF

+0

@ EOF悪いです。ありがとう! – Sergio

1

はい、tTabは2つのEventEntryの配列です。

{LEVEL, wLP0000FF00}初期設定tTab[0]および{0xFFFF, wL0000Ign}初期設定tTab[1]

これは、LEVEL,wLP0000FF00、およびwL0000Ignの値が有効な値であることを前提としています。

この場合、EventEntryは、構造型または配列型(structまたは配列の場合はtypedef)です。

LEVELの種類、wLP0000FF000xFFFF、及びwL0000IGn(すなわち、同じタイプまたは暗黙的に変換可能)は、初期化するために使用されているどのようなフィールドまたはEventEntryの元素の種類と互換性がある必要があります。