.| Autor | Beitrag |
|---|---|
|
000 27.03.2002, 19:13 King2500 |
hi all weiß jemand worin der unterschied besteht ob ich ne struktur so definiere: struct oder so: typedef struct ich weiß schon dass man mit typedef eigene typen definieren kann. aber was das bei ner struktur bringen soll kapier ich nich.... weiß das zufällig jemand? danke! --Webmaster @ Half-Life Portal |
|
Profil || Suche |
|
001 27.03.2002, 20:43 Kriz |
Also, zuerst die Struktur an sich und ihre Bestandteile: Mit typedef gibt man einem Datentyen einen Aliasnamen, unter dem der Datentyp auch angesprochen werden kann. Im Falle einer struct heißt das: typedef <DATENTYP> <ALIASNAME>; Der Datentyp ist in diesem Falle das struct + Block an sich und der Aliasname eben NAME_DER_STRUKTUR. Die generelle Syntax für struct sieht dagegen so aus: struct <NAME> { ... } <OPTIONALES OBJEKT>; Hier bekommt die Struktur bereits ihren Namen. Am Ende hinter dem Block kann man entweder sofort ; schreiben oder bereits ein Objekt der Struktur deklarieren (OPTIONALES OBJEKT). Benutzt du also typedef, dann kannst du nicht sofort ein optionales Objekt der Struktur erzeugen. Das geht nur wenn man struct als solches definiert. Btw. kann man in C afaik nur mit "typedef struct" eine Struktur erzeugen, da C die direkte Definition einer Struktur nicht kennt. --K:R-I)Z++ Dieser Beitrag wurde am 27.03.2002 um 20:46 von Kriz bearbeitet. |
|
Profil || Suche |
|
002 27.03.2002, 20:51 King2500 |
dann nehm ich doch leichter die erste methode... oder bringt das 2. irgendwie vorteile? --Webmaster @ Half-Life Portal |
|
Profil || Suche |
|
003 27.03.2002, 20:54 Kriz |
Nein, die zweite braucht man nur bei C... --K:R-I)Z++ Dieser Beitrag wurde am 27.03.2002 um 20:54 von Kriz bearbeitet. |
|
Profil || Suche |
|
004 27.03.2002, 23:22 Hellfire |
Kriz: |
|
Profil || Suche |
|
005 28.03.2002, 01:57 Kriz |
Aber anscheinend nicht bei jedem C Compiler... Zumindest hatte ich damals mal irgendeinen asseligen DOS-Compiler von Borland, der wollte structs nur mit typedef akzeptieren. --K:R-I)Z++ Dieser Beitrag wurde am 28.03.2002 um 01:59 von Kriz bearbeitet. |
|
Profil || Suche |
|
006 29.03.2002, 00:20 Prefect |
Auf Grund der Namespaceaufteilung von C muß man, wenn man eine struct verwendet, auch immer das struct-Keywort vorne hinstellen. Mit anderen Worten:
In C++ ist das im Zuge der struct/class-Gleichmacherei nicht mehr so ;) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
007 31.03.2002, 23:22 static_caster |
hm, was bedeutet dann typedef BOOL (CALLBACK* LPFNCCSTYLEA)(HWND hwndParent, LPCCSTYLEA pccs); oder typedef DWORD (FAR PASCAL *LPCLIPPERCALLBACK)(LPDIRECTDRAWCLIPPER lpDDClipper, HWND hWnd, DWORD code, LPVOID lpContext ); ? -- |
|
Profil || Suche |
|
008 01.04.2002, 00:01 KillerDoc |
Das sind typedefs für Funktionszeiger typedef BOOL (CALLBACK* LPFNCCSTYLEA)(HWND hwndParent, LPCCSTYLEA pccs); is definiert zb LPFNCCSTYLEA als datentyp für zeiger auf eine Funktion die BOOL zurückgibt, mit der Aufrufkonvention CALLBACK und die zwei parameter von typ HWND und LPCCSTYLEA annimmt --lazy sunday afternooon Dieser Beitrag wurde am 01.04.2002 um 00:01 von KillerDoc bearbeitet. |
|
Profil || Suche |
|
009 01.04.2002, 13:57 Another1 |
LPFNCCSTYLEA .. MS ... und daraus soll man nu schlau werden? --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
010 02.04.2002, 00:08 TheTinySteini |
Long Pointer auf ne Function, die irgendwas mit nem CCSTYLEA macht. KA was das is. Cosmic Concert Style Advice vielleicht >:O --TheTinySteini |
|
Profil || Suche |

