Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wert aus Struktur verändert sich von Selbst!?!?

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 ] > 2 <
010
26.07.2008, 19:53 Uhr
0xdeadbeef
Gott
(Operator)


Naja, die rhetorische Frage scheint nicht genug gewesen zu sein, um den Groschen fallen zu lassen.

Was das eigentliche Problem angeht, ich vermute, dass es sich hier um einen "C++"-Compiler a la Visual C++ 6.0 handelt. Oder zumindest etwas in der Größenordnung - ein alter Haufen Softwareschrott, der vor der Standardisierung der Sprache und in einer Zeit geschrieben wurde, als derartige Spracherweiterungen die große Mode waren.

Ein HWND* ergäbe hier wenig Sinn, denn dann ginge jeder Zugriff darauf mitten ins Nirvana, was in aller Regel Segfaults auslösen dürfte - hier aber deckt sich das Array (bzw. der Speicherbereich direkt dahinter, denn das Array hat ja keine Größe) mit dem Rest des structs. Könnte ein Relikt eines dreckigen C-Hacks sein, obwohl man auch da eigentlich unions für solche Dinge benutzt.

Es gibt im POSIX-API einen ähnlichen Mechanismus. Naja, so halb - man reicht an msgsnd und msgrcv void-Zeiger weiter, die structs der Form

C++:
struct msgbuf {
  long mtype;
  char mtext[1];
};


beinhalten. Dafür wird mehr Speicher als für das Struct notwendig alloziiert, und der Bereich hinter dem Struct wird als Fortsetzung des Arrays betrachtet. In C, gerade nah an der Maschine, kommen solche Dinge manchmal vor - im Grunde trennt man sich hier ein bisschen von höheren Sprachkonzepten und schreibt ungefähr zwei Stufen über nacktem Assembly - für den täglichen Gebrauch ist es aber nicht empfehlenswert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.07.2008, 09:08 Uhr
TOSHMAX



Vielen Dank an alle,
jetzt geht alles so wie ich es will. Ich habe es zwar auch schon versucht dem Array einen feste Größe zu geben, aber da werde ich wohl irgendwas falsch gemacht haben.
Ich benutze übrigens den Code::Blocks Compiler und bin eigentlich sehr zufrieden damit.
Nochmals vielen Dank.

Dieser Post wurde am 27.07.2008 um 09:08 Uhr von TOSHMAX editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
27.07.2008, 10:48 Uhr
xXx
Devil


Code::Blocks ist kein Compiler :P Ist eine IDE und wird meist mit MinGW (war es zumindest mal), gewählt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: