Ich verstehe nicht, die Bedeutung dieser Aussage
Also gehe ich davon aus das nicht Ihr Code. Mal sehen, was der andere schrieb:
enum minmea_sentence_id { ... };
In (objektiv-) C dies einen Aufzählungstyp erklärt, minmea_sentence_id
, die durch das Vorsetzen der Namen mit enum
verwendet wird. So zum Beispiel:
enum minmea_sentence_id mySentenceID;
deklariert eine Variable vom Typ enum minmea_sentence_id
namens mySentenceID
.
Beachten Sie, dass, wenn man statt der oben sie geschrieben hatte:
minmea_sentence_id mySentenceID;
aber sie:
typedef enum { ... } minmea_sentence_id;
dann minmea_sentence_id
selbst einen Typnamen und dem obigen Beispiel Erklärung wäre nur gewesen wäre, habe das nicht gemacht, also brauchst du den enum
wenn du den Typ benutzt.
Warum wird es zweimal wiederholt?
Sie schrieben die Funktionsdeklaration:
Enum minmea_sentence_id minmea_sentence_id (const char * Satz, Bool streng);
Das erste Element in einer Funktionsdeklaration ist der Rückgabetyp und von der oben wissen wir, dass die ersten beiden Token enum minmea_sentence_id
ist.
Als nächstes kommt der Name der Funktion deklariert, minmea_sentence_id
, die seltsam aussieht - Benennung einer Funktion die gleiche wie ein Typ - aber ist überhaupt nicht illegal, obwohl normalerweise stark davon abgeraten, da es Code viel schwerer zu lesen macht!
Deshalb wird es zweimal wiederholt, aber warum haben sie das getan?
Wir können nur vermuten, aber (objektiv-) C++ unterstützt funktions Casts, zB:
int x = (int)expo; // valid in (Objective-)C(++)
int y = int(expr); // valid in (Objective-)C++ and NOT in (Objective-)C
Betrachten wir nun, was ein Aufruf an die minmea_sentence_id
Funktion wie folgt aussieht:
enum minmea_sentence_id mySentenceID = minmea_sentence_id("my sentence", TRUE);
ein bisschen wie eine Funktion-Stil Besetzung. Vielleicht dachten sie das, aber es ist nur eine Vermutung!
HTH
Bitte wählen Sie eine Sprache. – MikeCAT
Es ist eine Funktion, die den definierten Typ zurückgibt. Sowohl der Typ als auch die Funktion wurden identisch benannt. Es funktioniert in C, aber es ist eine schlechte Idee, Identifikatoren zu duplizieren. –
Es gibt keine Erwartung, wenn Sie es verstehen, da es einfach ungültiger C# -Code ist. Bitte klären Sie, wonach Sie suchen. –