typedef struct??
-
ich hatte den thread i-wo vor kurzem gesehen aba finde ihn nicht mehr...
naja jedenfalls meine frage: wo liegt der unterschied zwischen typedef struct und struct?? gibt es für typedef struct nen anderen namen (also Typ-Struktur oder so)??
danke schonmal und sry, wegen der dummen frage
-
typedef struct ist mE ein Relikt von C, das einem die Mühe abnahm danach immer struct meinStruct schreiben zu müssen, statt nur meinStruct.
-
achso ok danke, ich frag nur, weil ich gerade eine facharbeit über den austausch von daten via netzwerk schreibe, und man IMO nur typedef struct's via recv verschicken kann und ich aber wissen wollte, ob ich das ding nicht vllt. komplett fälschlicher weise Struktur nenne

-
Fake oder Echt schrieb:
achso ok danke, ich frag nur, weil ich gerade eine facharbeit über den austausch von daten via netzwerk schreibe, und man IMO nur typedef struct's via recv verschicken kann und ich aber wissen wollte, ob ich das ding nicht vllt. komplett fälschlicher weise Struktur nenne

Reden wir wirklich von C++?
Wenn ja, gibt es keinerlei Unterschied. Die gebräuchliche Schreibweise ist bei Strukturen und Klassen kein typedef anzugeben, u.a. weil es ja ohnehin Typdefinitionen sind.
cu André
-
ja ansich im kern von C++

ist bloß WinAPI dabei, aber das tat zu der frage ja eig. nichts zur sache...
also es ging mir nur um typedef struct und nicht, warum ich nur das verschicken kann und nicht normale strukturen, das wär dann winapi
-
Fake oder Echt schrieb:
ja ansich im kern von C++

ist bloß WinAPI dabei, aber das tat zu der frage ja eig. nichts zur sache...
also es ging mir nur um typedef struct und nicht, warum ich nur das verschicken kann und nicht normale strukturen, das wär dann winapi
Ich tippe daruf das du ganz normale Strukturen verschicken kannst (wenn gleich ich annehme das hier PODs gemeint sind). Die WinAPI ist selbst aber C und daher kann es sein das manche Konstrukte so definiert werden.
-
wenn ich z.B.
send (sSocket, (char*) &sh, sizeof (SEND_HEADER), 0);versende und SEND_HEADER "nur" als Strukt definiert ist, sendet er nichts. wenn allerdings ein typedef davor steht macht er keinerlei anstalten und verschickt alles sauber

aber wie gesagt, gehört an sich in den winapi bereich diese frage/das problem
-
achja nur als tipp

Fake oder Echt :
send (sSocket, (char*) &sh, sizeof (SEND_HEADER), 0);das sollte man lieber nicht machen ... da struct padding die größe verfälscht
immer schön alles in chars packen 
-
kannst du mir bitte rklärn was struct padding ist

-
also folgendes beispiel:
struct Test { char one; int two; }; sizeof(Test) = 6;So bei meinem compiler ergibt dieser aufruf 6... (Dev-C++)
Struct Padding heißt... der compiler füllt das struct mit "füllbytes" auf..
ich meine das hat was wegen der spiecher nutzung zu tun bin mir aber nicht sicher...
so aber sizeof(char) + sizeof(int) ergibt 5... also wurde ein füllbyte hinzugefügt.. was bei netzwerkpacketen extrem doof ist...
aber macht ja nichts.. du kannst ja alles in chars packenint size = 5; char buffer[128]; memcpy(buffer, &size, sizeof(int))damit kannst du sicher sein dass du auf beiden pc (kann ja eine unterschiedliche plattform sein) die pakete gleich interpretiert werden.. denn ich meine char ist iwie festgelegt auf 1 byte..
Gruß Chris
-
achso ok danke

werd ich mir mal merken.
-
das wusste ich auch noch nicht bis vor kurzem.. ich hab das vorher auch mit strukturen gemacht aber als auf einmal eine kommunikation zwischen einem programm das mit dev-c++ erstellt wurde und einem programm das mit g++ erstellt wurde unter linux gabs probleme...
Gruß Chris
