Größe eines Datentyps dynamisch zur Laufzeit erkennen?
-
CodeOriginator schrieb:
Die Datenbank wird auf einem 64 Bit System von einem 32 Bit Programm eingelesen. Das Programm stellt fest, dass es sich um eine 32 Bit Datenbank handelt, und gibt das OK. Anschließend möchte es beim OS dynamisch Speicherplatz für einen Integer anfordern, um dann in diesen den Integer aus der Datei lesen zu können. Was das Programm aber nicht weis, ist, dass es in Wirklichkeit einen 64 Bit breiten Datentyp angefordert hat.
Ein 32Bit Programm kann immer nur als 32Bit Programm ausgeführt werden! Man kann aus demselben Pogrammcode explizit ein 32bit und ein 64Bit Programm compilieren und linken. Aber 32Bit bleibt 32Bit Programm und 64Bit bleibt 64Bit Programm. Wir reden hier nicht über Java oder irgend eine Skriptsprache. DIE DATENGRÖSSEN SIND DAHER IMMER SCHON ZUM COMPILEZEITPUNKT BEKANNT. Ergo, braucht es auch keine dynamische Überprüfung der Größe der Datentypen!
Die Datei braucht nur eine Metainformation auf welchen System sie geschrieben wurde. Wenn sie auf verschiedenen OS laufen soll, muß man auch noch die Endiness beachten, und man muß darauf achten, daß UNIX ILP32 bzw. LP64 ist und Windows die Datentypen anders definiert. Es gibt mitterweile zusätzliche Header, die aber nicht Bestandteil der ISO C++ Norm sind, die fixe Bitgrößen garantieren.
P.S. Man sollte seine Mitmenschen nicht dumm anmachen, weil man bestimmte Dinge nicht weiß.
-
Danke für die Zusammenfassung, jetzt ist die Nachricht auch bei mir angekommen. Hätten es die Vorgänger nur einbisschen formaler zum Ausdruck gebracht, hätten wir uns jetzt nicht die fünf Seiten streiten müssen.
P.S. Man sollte seine Mitmenschen nicht dumm anmachen, weil man bestimmte Dinge nicht weiß.
Das sehe ich genauso!
-
CodeOriginator schrieb:
P.S. Man sollte seine Mitmenschen nicht dumm anmachen, weil man bestimmte Dinge nicht weiß.
Das sehe ich genauso!
Warum hast Du Dicht nicht daran gehalten? Der agressive Ton stammt ja von Dir!
-
ich möchte mich hiermit dafür stark machen dass raue ausdrücke nicht durch spott geahndet werden.
.. was aber haltet ihr von der einführung der prügelstrafe?
-
Warum hast Du Dicht nicht daran gehalten? Der agressive Ton stammt ja von Dir!
Weil einige Leute hier in diesem Thread völlig ignorant von Sachen geredet haben, von denen sie keine Ahnung haben. Paradebeispiel 'Badestrand'. Aber ich möchte hier nicht weiterhin bestimmte Personen an den Pranger stellen.
ich möchte mich hiermit dafür stark machen dass raue ausdrücke nicht durch spott geahndet werden.
Werden sie es denn?

.. was aber haltet ihr von der einführung der prügelstrafe?

Wörtlich genommen fällt das im Zeitalter der Virtualität ausgesprochen schwer.

-
wenn man keine probleme hat, dann macht man sich einfach welche
-
wenn man keine probleme hat, dann macht man sich einfach welche
Soviel zum Thema moderner Familienpolitik.
-
CodeOriginator schrieb:
wenn man keine probleme hat, dann macht man sich einfach welche
Soviel zum Thema moderner Familienpolitik.
Eindeutig eine Überschreitung der normalen Handlungsweise mit Regen
-
Eindeutig eine Überschreitung der normalen Handlungsweise mit Regen
Eindeutige Artikulierungskomplexe. Was war nochmal gemeint?
-
CodeOriginator schrieb:
...Ich will zur Laufzet feststellen können, wie groß ein Datentyp ist. ...
Sorry, aber Du scheinst wirklich ein wenig ... sagen wir mal vorsichig: begriffsstutzig zu sein: ***Was zur Compilezeit bekannt ist, ist auf jeden Fall auch zur Laufzeit bekannt !!***.
Ergo: Die "Compilezeitbekanntheit" reicht Dir.
Aber dafür bist Du leider viel zu genial und hast schon viel zu viele 16-/32- und 64-bit-Programme geschrieben (mit "Encodings" und all dem anderen tollen Zeug), um das zu durchschauen !!! :xmas2: :xmas2: :xmas2:Gruß,
Simon2.
-
Sorry, aber Du scheinst wirklich ein wenig ... sagen wir mal vorsichig: begriffsstutzig zu sein: Was zur Compilezeit bekannt ist, ist auf jeden Fall auch zur Laufzeit bekannt !!.
Das weis ich mittlerweile auch schon. (Siehe Thread)
Aber dafür bist Du leider viel zu genial und hast schon viel zu viele 16-/32- und 64-bit-Programme geschrieben (mit "Encodings" und all dem anderen tollen Zeug), um das zu durchschauen !!!
Na wenn du meinst... Ein toller Tritt in deinen eigenen Hintern. Ich habe erst im Laufe des Threads erfahren, dass es mit Encodings möglich ist. Folgedessen konnte ich also logischerweise davor nichts mit Encodings zu tun haben. Aber King Simon hat wieder seine Klappe offen... Herzlichen Glückwunsch.
-
aber sag mal, eins würde mich doch noch interessieren: wenn du mit "dynamic_sizeof" herausgefunden hättest, dass du dich auf einem system mit 8-byte-ints befindest, wie wärst du dann weiter verfahren? nur die hälfte an integers (immer noch gleicher speicherplatz) allokieren? und 2 32-bit ints in ein 64-bit-int reinquetschen? die einstigen indexe (beim schreiben; z.b. in einer schleife) müsstest du dann noch per funktion/macro umrechnen (ganzahldivision + modulo) wenn du auf einen 32-bit-integer zugreifen willst... stell ich mir nicht so spaßig vor, da du einiges verändern hättest müssen.
PS: es gibt im header <stdint.h> schon die typedefs uint32_t, uint64_t (glaube ich auch) und sowas
-
CodeOriginator schrieb:
...
Na wenn du meinst... Ein toller Tritt in deinen eigenen Hintern. ...Mich wundert halt Dein und überheblicher Ton in diesem Thread ... besonders, da Du eigentlich um Hilfe bei genau den Leuten anfragst, die Du hier anpöbelst.
Ich weiß nicht, wen Du damit beeindrucken möchtest ... mich jedenfalls nicht - und die echten C++-Koryphäen hast Du damit auch abgeschreckt (die wissen wohl, warum sie sich aus diesem Thread fernhalten).Viel Spaß noch mit dieser Strategie,
Simon2.
-
Nu ist endlich gut kids. Kriegt euch mal wieder ein.
-.-
Thread geschlossen.