ob DWORD jetzt unsigned int oder unsigned long ist kann ich nichtmehr genau sagen :|
btw. ich bin c coder, c++ is aber cooler wegen dan ganzen klassen <- mein codestil is also bestes beispiel was bei raus kommt wenn man beides gleichzeitig lernt und dann auchnoch ohne buch/lehrer
Quote:
Originally Posted by republicaner
Hab es jetzt so gemacht wie MrSm!th es gemacht hat, allerdings bekomme ich eine Fehlermeldung, wenn ich die exe starte und sie schließt sich sofort.
Man sollte Pointer aus Kompatibilitätsgründen nicht in einem DWORD speichern. DWORD_PTR oder UINT_PTR sind die bessere Wahl und erzeugen keine unfindbaren Fehler, wenn ihr später auf 64 bit Programme umsteigt (bzw. umsteigen solltet).
Und um es vorweg zu nehmen:
Nein, das sind keine Pointer! Die Typen garantieren groß genug zu sein, um einen Pointer beinhalten zu können.
DWORD = 4 byte, egal ob 64 oder 32 bit.
auf einem 64 bit system sind pointer aber leider 8 byte groß, d.h. wenn du deinen compiler auf 64 bit umstellst wird der dir aus DWORD einen unsigned short machen (4byte) und wenn du da versuchst einen pointer reinzukopieren ...
Nur so nebenbei: Die Größen der Datentypen sind nicht näher festgelegt. Der C++ Standard schreibt nur die Zahlenmenge vor, die der Datentyp zu speichern im Stande sein muss. Aber dass unsigned long immer 4Byte sein müssen, ist nirgends festgelegt. Solange garantiert ist, dass die vorgegebene Zahlenmenge abspeicherbar ist, kannst du dich auch nicht beschweren, wenn ein unsigned int auf einmal 8Byte groß ist.
Nur so nebenbei: Die Größen der Datentypen sind nicht näher festgelegt. Der C++ Standard schreibt nur die Zahlenmenge vor, die der Datentyp zu speichern im Stande sein muss. Aber dass unsigned long immer 4Byte sein müssen, ist nirgends festgelegt. Solange garantiert ist, dass die vorgegebene Zahlenmenge abspeicherbar ist, kannst du dich auch nicht beschweren, wenn ein unsigned int auf einmal 8Byte groß ist.
Jup, das stimmt. Jedoch ist es jetzt im Moment eher ungünstig Pointer in Variablen mit 32 Bit zu schreiben.
Zumal die Aussage "Hmm, kann ja noch größer werden" das Desaster nicht ungeschehen macht.
Sollten unsigned int Typen ab morgen 8 Byte groß sein, dann will ich absolut nichts gesagt haben! Jedoch wage ich zu bezweifeln, dass das - wenn überhaupt - in naher Zukunft passieren wird.
Doch was weiß ich schon?
Ich wüsste nicht, wieso 32bit Pointer unvernünftig sein sollten.
Die meisten Spiele sind für 32bit programmiert und laufen in der WOW64 VM, da haben auch 32bit Dlls mit ihren 32bit Pointern keine Probleme.
Ich wüsste nicht, wieso 32bit Pointer unvernünftig sein sollten.
Die meisten Spiele sind für 32bit programmiert und laufen in der WOW64 VM, da haben auch 32bit Dlls mit ihren 32bit Pointern keine Probleme.
Von dir hätte ich eigentlich erwartet, dass du sowas verstehst.