Wie Schreibe ich ein typedef in der header-Datei?
Ich habe eine Quelldatei, wo ein typedef struct definiert ist:
typedef struct node {
char *key;
char *value;
struct node *next;
} *Node;
In diesem Modul gibt es einige Funktionen, die auf einem Knoten und die Knoten als Rückgabetyp. Was soll ich schreiben, die in der header-Datei für diese typedef?
Ist es nicht richtig zu schreiben, nur
typedef *Node;
in der Kopfzeile?
warum schreibst du nicht die ganze Struktur in deine header-Datei selbst..und verwenden
*Node
in Ihrem Quellcode-Datei.InformationsquelleAutor theva | 2013-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
Aber ich würde abraten, verstecken Sie den Mauszeiger in der Typ-Deklaration. Es ist mehr informativ zu müssen, dass die Informationen in der Variablen-Deklaration.
Modul.c:
Modul.h:
Deklaration von Variablen für pointer irgendwo:
typedef struct node node;
und entfernen Sie die Kappen Verrücktheit.Wahr. Ich wollte nur nicht, wan ' T verwirren Ihr/ihm, indem Sie seine/Ihre Benennungskonventionen.
InformationsquelleAutor user694733
Die Erklärung
ist ungültig. Es fehlt der Typ. Ein guter Weg, um zu schauen
typedef
ist daran zu erinnern, es ist nur eine storage-class-specifier, so, es funktioniert wie alle anderen Erklärungen. Wenn Sie einen alias erstellen möchtenNode
für die Artstruct node *
, nur erklären, sondern ein Knoten-Zeiger und der name esNode
:struct node *Node;
Und jetzt voranzustellen
typedef
Stichwort:typedef struct node *Node;
Im Allgemeinen, um einen alias für einen Typ, der Sie nur deklarieren Sie eine variable dieses Typs mit dem gleichen Namen wie der alias-name, den Sie möchten, und dann voranzustellen
typedef
Schlüsselwort. Auch kompliziertetypedef
Erklärungen können leicht angesprochen wie dieser.So,
typedef *Node;
ungültig ist, es ist wie schreiben, nurj;
ohne tatsächlich mit der Angabe seines Typs.Nun, Sie können nicht
typedef
etwas zweimal. Entweder Sie nehmen dietypedef
ausstruct node
Erklärung und verschieben Sie es in die header-Datei, oder Sie verschieben das ganzetypedef
+ Struktur-Deklaration der header-Datei. Die erste Lösung ist in der Regel, was Sie wollen, da es Ihnen erlaubt, einige Informationen versteckt. Also, mein Vorschlag ist, schreiben Sie diese in der header-Datei:Durch und bewahren Sie diese in der source-Datei:
Beachten Sie, dass ich das alias
Node_ptr
, nichtNode
. Dies ist eine gute Praxis, zu vermitteln, dassNode_ptr
ist ein Zeiger.InformationsquelleAutor Filipe Gonçalves