Kommentare, Kommentierung, Verständlichkeit.
-
Fedaykin schrieb:
/** *Node ist die grundlegende defintion eines Eintrages in einen *Binärbaum */ typedef struct { void * data; /*<der Zeiger auf das Datenelement dieses Knotens*/ node * leftChild; /*<der Zeiger auf den linken Sohn dieses Knotens (NULL) wenn es keinen linken Sohn gibt*/ node * rightChild; /*<der Zeiger auf den rechten Sohn dieses Knotens (NULL) wenn es keinen rechten Sohn gibt*/ } node
wäre mir selber sonst zu umständlich und ist hässlicher zu lesen wenn man immer wieder struct und sowas davor schreiben mussKlar wäre es so klarer als mit dem struct, aber nicht ANSI-konform (der typedef-Name existiert erst am Ende der Definition, also kannst du ihn "innen" nicht verwenden. In C++ kannst du den struct-Namen ohne typedef direkt verwenden (
struct node{void*data;node*left;node*right;};, in C benötigst du eine Forward-Deklaration dafür:typedef struct node_ node; struct node_ { void* data; node* left; node* right; };@ten und DEvent: Ja, C hat typedef. Aber das ersetzt auch keine Dokumentation (im Gegenteil - du mußt dem Anwender erklären, was sich hinter dem definierten Begriff verbirgt und wie er ihn einsetzen darf).
-
Man kann auch einfach jeweils den gleichen Namen verwenden.
typedef struct foo { ... } foo;
-
Bashar schrieb:
Man kann auch einfach jeweils den gleichen Namen verwenden.
typedef struct foo { ... } foo;kannst auch 'ne instanz anlegen die so heisst:
typedef struct foo { int x; } foo; int main() { foo foo; // jetzt blickt keiner mehr durch }
-
Im anderen Fall blickt man aber auf jeden Fall durch, da man den Struct-Namen nicht ohne das Schlüsselwort 'struct' verwenden kann. Ich frage mich immer wieder, was Menschen dazu treibt, sich die wildesten Namenskonventionen für struct-Tags auszudenken.
-
Bashar schrieb:
DEvent schrieb:
Hat C keinen typedef?
Doch schon, aber wozu?
Du liest auch nicht was man postet, gelle? Dann bring mir bitte Beispiele/Argumente wieso das schlecht sein soll?
The use of typedef is also valuable when you want to declare things whose declaration syntax is painfully impenetrable, like ‘array of ten pointers to array of five integers’, which tends to cause panic even amongst the hardy. Hiding it in a typedef means you only have to read it once and can also help to break it up into manageable pieces:
typedef int (*a10ptoa5i[10])[5];
/* or */
typedef int a5i[5];
typedef a5i *atenptoa5i[10];Try it out!
Nochmal für dich.
Statt
(int(cmp*)(void*,void*)liest man
vergleichsFunction(oder etwas ähnliches), und schon muss man sich die Kommentare nicht unbedingt durchlesen um dahinter zusteigen was gemeint ist.
-
DEvent schrieb:
Du liest auch nicht was man postet, gelle? Dann bring mir bitte Beispiele/Argumente wieso das schlecht sein soll?
Das Kompliment geb ich direkt zurück. Hab ich gesagt dass irgendwas schlecht ist? Ich mach doch nur Spaß. Mach von mir aus für jeden Datentyp der irgendwo ein Sternchen zuviel enthält ein typedef. Manche brauchen sowas.