Problem mit struct (Sorry irgendwie doppelt reingerutscht)
-
Hallo,
wo ist zwischen den Beispielen der Unterschied und habe ich im zweiten
Beispiel schon eine Instanz im Header erzeugt?//Header
typedef struct
{
unsigned long a;
unsigned long b;
unsigned long c;
}TpdoParameter;//C Modul
TpdoParameter Index1800; Instanzen erzeugen
TpdoParameter Index1801; ..............//Header
struct TpdoParameter
{
unsigned long y;
unsigned long x;
unsigned long l;
};//C Modul
struct TpdoParameter Index1800; Instanzen erzeugen
struct TpdoParameter Index1801; ..................
-
Ich würde sagen,
da gibt es keinen Unterschied.
In beiden Beispielen legst du fest,
wie die Struktur aussieht.Erst mit der Objekterzeugung in main
wird Speicher belegt!
-
im 1. beispiel kannst du von TpdoParameter ohne explizites struct instanzen erzeugen:
TpdoParameter t;
wobei in der definition der struktur keine instanz erzeugt wird sondern nur ein typedef angelegt wird.im 2. beispiel musst du struct noch mit angeben:
struct TpdoParameter2 t2;es kommt auf das vorstehende typedef an ob instanzen oder typenamen erzeugt werden.
-
was soll dann aber fogendes Beispiel (auf der Microsoft homepage)
struct PERSON // Declare PERSON struct type
{int age; // Declare member types
long ss;
float weight;
char name[25];
} family_member; // Define object of type PERSON
int main()
{
struct PERSON sister; // C style structure declaration
PERSON brother; // C++ style structure declaration
sister.age = 13; // assign values to members
brother.age = 7;
}
Warum wird hier schon eine Instanz family_member erzeugt, die dann nie
verwendet wird, ausser wenn das ganze im Header steht bei jedem includieren
speicher verbraucht wird?
Ich findet das ist mal wieder ein Beispiel was mehr verwirrt als das es hilft.
-
hermes schrieb:
Warum wird hier schon eine Instanz family_member erzeugt, die dann nie
verwendet wirdVielleicht um zu zeigen, dass es möglich ist? Du solltest nicht allzu viel in solche Codeschnipsel reininterpretieren. Bei Game Engines würde man wohl sagen, das ist einfach nur 'ne Tech-Demo.
-
Stehen eigentlich bei jedem Compiler die Struct Members immer der reihe
nach im Speicher?typedef struct
{
unsigned char a; //-> Adresse 0
unsigned char b; //-> Adresse 1
unsigned char c; //-> Adresse 2
}TpdoParameter;Oder gibt es da Unterschiede.
-
hermes schrieb:
Stehen eigentlich bei jedem Compiler die Struct Members immer der reihe
nach im Speicher?Ja.