2016-03-22 8 views
0

Die Struktur, die ich will, ist eine verknüpfte Liste. Jeder Block enthält einen Header und einen block_part. Die Kopfzeile enthält free, prev und next. Ich frage mich nur, ob der folgende Code eine gültige Implementierung ist.Ist dies eine gültige Methode zum Definieren einer Struktur, die auf einen Knoten desselben Typs verweist?

typedef struct block 
{ 
    /*header + block*/ 
    bool free; 
    block *prev; 
    block *next; 
    char block_part[]; 
} block; 

Als Reaktion auf die Kommentare, so dass der richtige Weg, dies zu tun ist:

typedef struct block block; 

struct block 
{ 
    /*header + block*/ 
    bool free; 
    block *prev; 
    block *next; 
    char block_part[]; 
} ; 

?

+1

Nicht in C; Sie müssen 'struct block *' innerhalb der Strukturdefinition verwenden. Oder Sie benötigen 'typedef struct block block;' gefolgt von 'struct block {...; Block * nächster; ...}; '. Die Geschichte ist in C++ anders. –

+0

Danke. Ich habe meine Frage aktualisiert. – Jobs

+0

Das ist eine der zwei gültigen Möglichkeiten, dies zu tun. Der andere war 'typedef struct block {...; Strukturblock * next; ...} block; '. Beide arbeiten. Sie sind im Grunde gleichwertig. –

Antwort

0

Vorwärts erklären zuerst dh

typedef struct block block; 

dann erklären die Struktur dh

struct block { 
    bool free; 
    block * prev; 
    block * next; 
    char block_part[]; 
}; 
Verwandte Themen