Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Offset berrechnen, bitte schnell

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.06.2003, 15:56 Uhr
oscarini



Hallo Leute,
ich habe ein Problem bei Addieren von Addressen:

Beispiel:
static uInt32 test; //sizeof of config_v(eine Struct mit mehreren Variablen von unterschiedlichen Typen)
static void* test1; //Start Address of struct
static void* test2;//End Address of struct
static void* test3; //OFFSET
test = sizeof(struct);
test1 = &struct;
test2 = &struct + sizeof(struct) ;
test3 = &struct.xEintrag - &struct

test und test1 sind Ok,
bei der Berrechnung von test2 und test3 kommen aber ??Werten, warum?

Danke an Alle

Oscar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.06.2003, 16:01 Uhr
virtual
Sexiest Bit alive
(Operator)


Was ist "struct"? Der Code da oben kann nicht tun, weil "struct" ein Schlüsselwort ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.06.2003, 16:03 Uhr
arkantos



sizeof(stuct) kann man nicht machen. Das ist doch kein Datentyp. Mit struct definiert man sich einen eigenen Datentypen, aber es ist kein Typ wie "int" der auf eine Größe festgelegt ist.
--
schöne grüße,
arkantos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2003, 16:27 Uhr
~oscarini
Gast


Hallo,
das mit struct war es nur gemeind eine variable von typ struct!!

bei meinem Programm sieht so aus:

struct config_1 config_v;

config_1 ist die eigentliche Structur, config_v ist eine Variable von typ confiv_1.

Also, in meinem alten Code überall wo steht struct mit config_v verstehen


Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.06.2003, 16:29 Uhr
~0xdeadbeef
Gast


Ich vermute, dass sowas gemeint ist:

C++:
struct test_struct {
    int erster_eintrag;
    void ***bogus[12];
    double letzter_eintrag;
};

struct test_struct mein_struct;
int groesse = sizeof(struct test_struct);
void *anfang = &mein_struct;
void* ende = anfang + groesse;
int offset = (int) (&mein_struct.erster_eintrag - anfang);


Allerdings bin ich nicht sicher, wozu das gut sein soll.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.06.2003, 16:44 Uhr
Tommix



Hallo,
test2 zeigt nicht auf das Ende des struct, sondern direkt dahinter.
test3, der Abstand zweier Zeiger, ist selbst kein sinnvoller selbiger (siehe 0xdeadbeef). Wo soll test3 denn hinzeigen?

Gruss Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.06.2003, 16:56 Uhr
ao

(Operator)


@oscarini,
bitte poste mal ein "vollständiges" Stück Code, also mindestens den Teil von oben plus die Definition der Struktur (und aller eventueller Substrukturen).

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.06.2003, 15:42 Uhr
~kronos
Gast


also, den offset bekommst du mit dem makro offsetoff aus stddef.h (C, wird's bei C++ wohl auch geben)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.06.2003, 16:46 Uhr
virtual
Sexiest Bit alive
(Operator)


Anmerkung: Wird offsetof (ohne doppel F geschrieben).
Nicht anzuwenden bei:
1. Bitfeldern
2. Nicht PODs
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: