Größe eines Datentyps dynamisch zur Laufzeit erkennen?
-
django schrieb:
also bleibt dir nix anderes übrig als durchgehend 4-byte-ints zu verwenden.
blöde logik... wollte eigentlich sagen, dass die größe des verwendeten datentyps gleich groß bleiben muss, ob das nun 64-bit (uint64_t) oder 32 bit (uint32_t) sind...
-
trau mich ja fast garnicht eine Idee zu posten, weil meine skills meilenweit unter denen des CodeOriginators sind .. Termin-Druck, ey?
ich würds so versuchen:
gesichert zwei gewünschte Typen nebeneinander im Speicher erzeugen und deren Adressen ermitteln, die Differenz besitimmen und glauben das wäre die tatsächliche Byte-Größe des Typs ... wenn ich mich geirrt habe bin ich jetzt wohl tot!
-
weil meine skills meilenweit unter denen des CodeOriginators sind
Social-Skills???

-
Ich habe bereits eine 32 Bit Integer-Klasse geschrieben. Eigentlich wollte ich es unkomplizierter durch eben dieses dynamische sizeof() lösen. Aber danke, dann werde ich wohl diese Alternative ergreifen müssen.
-
CodeOriginator schrieb:
Ich habe bereits eine 32 Bit Integer-Klasse geschrieben. Eigentlich wollte ich es unkomplizierter durch eben dieses dynamische sizeof() lösen. Aber danke, dann werde ich wohl diese Alternative ergreifen müssen.
ich glaube jeder andere gedanke, den du jemals hattest war komplizierter als
typedef uuint32_t { unsigned char value[4]; }uint32_t;
-
Im Gegenteil, sogar einfacher:
typedef unsigned char uint32[4];
-
lol
-
rofl, der thread ist der hammer.
ich nominiere codeoriginator für die wahl zum troll des jahres 2007!
-
Gibt's jetzt nen Keks?
-
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.