<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Größe eines Datentyps dynamisch zur Laufzeit erkennen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es in C++ denn eine Möglichkeit, während der Laufzeit die Größe eines Datentypes zu ermitteln? sizeof() ist ja statisch, aber ich bräuchte es dynamisch. Danke für Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199878/größe-eines-datentyps-dynamisch-zur-laufzeit-erkennen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 22:08:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199878.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Dec 2007 23:13:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:13:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>gibt es in C++ denn eine Möglichkeit, während der Laufzeit die Größe eines Datentypes zu ermitteln? sizeof() ist ja statisch, aber ich bräuchte es dynamisch. Danke für Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416836</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:13:41 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:20:49 GMT]]></title><description><![CDATA[<p>datentypen sind bereits zur compile-zeit bekannt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416837</guid><dc:creator><![CDATA[datentyp]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:26:18 GMT]]></title><description><![CDATA[<p>Ja, die Datentypen des eigenen Programmes. Ich brauche es aber dynamisch! Wenn ich z.B. mein Programm unter einem 32 Bit System kompiliere, kann ich mit den Datentypen nicht genauso arbeiten wie unter einem 64 Bit System. Deshalb muss ich zur Laufzeit ermitteln können, wie groß der jeweilige Datentyp ist, um so speziell darauf reagieren zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416840</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:26:55 GMT]]></title><description><![CDATA[<p>32 bit oder 64 bit ist auch zur compilezeit bekannt ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416843</guid><dc:creator><![CDATA[ronny]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:26:55 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:39:42 GMT]]></title><description><![CDATA[<p>Oh Gott, ist das pure Ignoranz, oder versteht ihr denn wirklich nicht, was ich meine? Es ist mir scheißegal, ob was zur Compilezeit bekannt ist, denn die Antwort hätte ich mir auch selber geben können! Schluss jetzt damit, was zur compilezeit bekannt ist. Ich suche nach einer Möglichkeit, die Größe eines Datentypen zur Laufzeit zu ermitteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416847</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:43:43 GMT]]></title><description><![CDATA[<p>Wenn es zur Compilezeit bekannt ist, bastelst du dir halt irgendein #define oder was weß ich, was dir eine bool variable mit true oder false definiert, die du dann per Laufzeit mit einer if-Abfrage abfragst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416849</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Fri, 07 Dec 2007 23:59:40 GMT]]></title><description><![CDATA[<p>Poste doch einfach garnichts, wenn du davon eh keine Ahnung hast. Kommen jetzt noch ernstgemeinte Antworten, oder ist der Thread schon tot?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416851</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Fri, 07 Dec 2007 23:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 07:36:22 GMT]]></title><description><![CDATA[<p>Die Frage ist einfach schlecht gestellt. Die Größe eines Objekts ist zum Compilezeitpunkt bekannt. Der Rest ist eigentlich nur noch eine Frage des Designs, wo gibt es dabei ein Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416884</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Sat, 08 Dec 2007 07:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 10:39:57 GMT]]></title><description><![CDATA[<p>eigentlich ist doch definiert das alle datentypen immer die gleiche anzahl an bytes haben (außer int), egal auf welchem system.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416933</guid><dc:creator><![CDATA[mnhhh]]></dc:creator><pubDate>Sat, 08 Dec 2007 10:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 10:44:01 GMT]]></title><description><![CDATA[<p>Nein, es sind nur Mindestgrößen und Verhältnisse definiert.</p>
<p>Um auf die Frage zurückzukommen: Es mag wohl sein, dass sich niemand konkret vorstellen kann, was Du möchtest. Deine bisherigen Erläuterungen haben dabei auch nicht sehr geholfen (da z.B. ein mit 32-bit kompiliertes Programm immer gleiche Typgrößen hat, auch wenn es auf einem x64-Prozessor läuft, und für native 64-bit muss neu kompiliert werden, wo sizeof() wieder die neuen Größen bereits zur Compilezeit ermittelt). Vielleicht machst Du einfach mal ein Stück Pseudocode, an dem wir sehen was Du vorhast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416936</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sat, 08 Dec 2007 10:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 10:50:39 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Nein, es sind nur Mindestgrößen und Verhältnisse definiert.</p>
</blockquote>
<p>Echt? Ich dachte das z.B. char immer ein byte ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416938</guid><dc:creator><![CDATA[mnhhh]]></dc:creator><pubDate>Sat, 08 Dec 2007 10:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 12:21:57 GMT]]></title><description><![CDATA[<p>Tja, falsch gedenkt...</p>
<p>ein char kann auch aus mehr als 1 Byte bestehen, aber sizeof(char) liefert trotzdem immer 1.<br />
Und so kann es z.B. sein, daß auch sizeof(int)=1 ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416980</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 08 Dec 2007 12:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 12:31:13 GMT]]></title><description><![CDATA[<p>warum behauptet dann die leute immer c++ sei portabel? da könnte ich jetzt irgendwo ein programm für unicode schreiben wo char = 2 Byte und dann geht es auf anderen rechner doch nicht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416986</guid><dc:creator><![CDATA[aber]]></dc:creator><pubDate>Sat, 08 Dec 2007 12:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 14:03:49 GMT]]></title><description><![CDATA[<p>Scheint doch so, als würde es die Mehrheit verstehen, was ich meine, siehe Post vor mir. Okay, ein Beispiel:</p>
<p>Angenommen, ich speichere auf einem 32 Bit System einen POD in eine Datei ab, wobei jeder Datentyp des PODs (nehmen wir mal ints) zum Kompilierzeitpunkt 4 Byte betragen hat. Jedoch möchte der Anwender die auf einem 32 Bit System generierte Datenbank nun auf einem 64 Bit System einlesen, wo die Größe eines ints jedoch 8 Byte beträgt. Die sollte das Programm zur Laufzeit erkennen können, und dementsprechend reagieren. Wie es reagiert, kann an dieser Stelle piepegal sein. Relevant an meiner Frage ist lediglich, wie ich die Größe zur Laufzeit erkenne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417018</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 14:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 14:08:28 GMT]]></title><description><![CDATA[<p>1. der beleidgende Tonfall bringt niemanden was.</p>
<p>2. Du brauchst natürlich die information, wie groß die daten in der datenbank sind. Die information wie groß die typen auf dem system sind auf dem das programm läuft, bekommst du eigentlich wirklich zur compilezeit, denn du musst das programm ja für 64bit neu compilieren, und dann funktioniert sizeof.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417021</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 08 Dec 2007 14:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 15:45:20 GMT]]></title><description><![CDATA[<p>Man könnte fast meinen das ist ein Trollthread.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417076</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 08 Dec 2007 15:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 15:53:10 GMT]]></title><description><![CDATA[<blockquote>
<p>Die information wie groß die typen auf dem system sind auf dem das programm läuft, bekommst du eigentlich wirklich zur compilezeit, denn du musst das programm ja für 64bit neu compilieren, und dann funktioniert sizeof.</p>
</blockquote>
<p>Okay, das ist ein Argument, ich muss dir Recht geben. Aber darf ich meine Frage nochmal stellen? Ich will zur Laufzet feststellen können, wie groß ein Datentyp ist. Wie mache ich das? Und bitte klammert euch nicht an irgendwelchen anderen Tatsachen fest, sondern beantwortet mir doch endlich meine Frage. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417084</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 15:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 15:53:35 GMT]]></title><description><![CDATA[<p>Du müsstest halt in der ersten Bytes der Datei das Encoding festlegen.</p>
<p>Oder du speicherst einfach nicht binär, sondern z.B. als XML ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417085</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 08 Dec 2007 15:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 16:02:17 GMT]]></title><description><![CDATA[<p>Ich muss mir widersprechen. Es ist nicht zwingend notwenidg, ein auf einem 32 Bit System kompiliertes Programm neuzukompilieren, wenn es auf einem 64 Bit Sys laufen soll.</p>
<blockquote>
<p>Du müsstest halt in der ersten Bytes der Datei das Encoding festlegen.</p>
</blockquote>
<p>Das ist eine Idee. Bringt mir aber auch nichts, wenn das Programm nicht neukompiliert wird. Gibt es denn aber sonst keine alternative STL Methode, die mir die Größe zurückliefert? std::numeric_limits ist aber statisch, oder?</p>
<blockquote>
<p>Oder du speicherst einfach nicht binär, sondern z.B. als XML ab.</p>
</blockquote>
<p>geht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417089</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 16:09:36 GMT]]></title><description><![CDATA[<p>Wird ein 32-bit Programm auf einer 64-bit Maschine ausgeführt haben die Datentypen diesselbe Größe, wie auf einem 32-bit System. Schließlich sind ja auch auf einem 32-bit Windows die Integer in einem DOS-Programm 16-bit groß. Das wird einfach emuliert, oder irgendwie anders gelöst.<br />
Wenn du dein Programm also in 32-bit kompilerst, sollte es auch die Datei korrekt lesen können, oder irre ich mich da?<br />
In C++ gibt es aber soweit ich weiß kein Mittel zur Laufzeit die Größe eines Datentyps herauszufinden schließlich existieren zur Ausführung eh nur noch Nullen und Einsen. Eine Binäre-Datei besteht auch nur aus Bits; die Interpretation liegt bei dem Anwender. Du könntest ja immer nur einzelne Bytes einlesen und dir dann den Integer zusammenschiften, einfacher wäre aber - wie schon erwähnt - einfach nicht binär, sondern text-basiert zu arbeiten.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417103</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 16:28:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Wird ein 32-bit Programm auf einer 64-bit Maschine ausgeführt haben die Datentypen diesselbe Größe, wie auf einem 32-bit System. Schließlich sind ja auch auf einem 32-bit Windows die Integer in einem DOS-Programm 16-bit groß.</p>
</blockquote>
<p>Nicht wenn man sie dynamisch anfordert. Und was ist, wenn ein auf 'nem 64 Bit System kompiliertes Programm eine auf einem 32 Bit System generierte Datenbank einliest? Crash.</p>
<blockquote>
<p>Das wird einfach emuliert, oder irgendwie anders gelöst.</p>
</blockquote>
<p>Das Schlagwort: &quot;irgendwie&quot;. Und das &quot;irgendwie anders lösen&quot; muss schon der Programmierer. In dem Fall ich.</p>
<blockquote>
<p>Wenn du dein Programm also in 32-bit kompilerst, sollte es auch die Datei korrekt lesen können, oder irre ich mich da?</p>
</blockquote>
<p>Du irrst dich. Siehe oben.</p>
<blockquote>
<p>In C++ gibt es aber soweit ich weiß kein Mittel zur Laufzeit die Größe eines Datentyps herauszufinden schließlich existieren zur Ausführung eh nur noch Nullen und Einsen.</p>
</blockquote>
<p>Soweit du weist, ja... Muss aber nicht so sein, deshalb habe ich diesen Thread hier eröffnet.</p>
<blockquote>
<p>Eine Binäre-Datei besteht auch nur aus Bits; die Interpretation liegt bei dem Anwender.</p>
</blockquote>
<p>Gut erkannt, die Interpretation liegt beim Anwender.</p>
<blockquote>
<p>Du könntest ja immer nur einzelne Bytes einlesen und dir dann den Integer zusammenschiften,</p>
</blockquote>
<p>Tatsache! Aber dazu muss man wissen, wie groß der Datentyp auf dem Hostsystem ist! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<blockquote>
<p>einfacher wäre aber - wie schon erwähnt - einfach nicht binär, sondern text-basiert zu arbeiten.</p>
</blockquote>
<p>Unter Berücksichtigung dieser Tatsache vielleicht schon. Man kann aber nicht alle Daten einfach textbasiert in die Datei speichert, schließlich handelt es sich mit den Datentypen nur um ein Beispiel. Es gibt auch komplexe binäre Strukturen, die man eben nicht als Text abspeichern kann. Und genau da scheitert die Idee mit dem XML Script.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417118</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 16:30:40 GMT]]></title><description><![CDATA[<p>Ihr empfehlt mir aus Unwissenheit irgendwelche Alternativmethoden, die ich allerdings nicht brauche. Wenn ihr nichts sinnvolles zum Thema beitragen könnt, und keine Antwort auf die Frage wisst, dann lasst es doch einfach!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417121</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 16:56:26 GMT]]></title><description><![CDATA[<p>Gut, also wenn ich dich richtig verstehe, schreibt ein Programm von dir binäre Daten in eine Datei. Das Programm soll hinterher die Datei wieder korrekt auslesen können, ohne zu wissen, ob in der Datei nun ein int 4 oder 8 Byte groß ist.<br />
So, du öffnest die Datei und siehst, sie ist 16 Bytes groß. Was sagt dir das? Nix, genau. Und deinem Programm kann diese Information auch nichts sagen, schließlich ist das die einzige die du hast.<br />
Lösungen gibt es viele. Z.B. könntest du aufpassen, dass deine Datenstrukturen immer gleich groß sind, egal unter welchem System du kompilierst. Du musst nur einige &quot;weite&quot; Grenzen setzen, z.B. dass ein char immer 8 Bit groß ist. Ich weiß nicht, auf was für Systemen dein Programm laufen soll, aber an Desktop- und Serversystemen hast du dann über 99% der Fälle abgedeckt.</p>
<p>Und wenn sowieso nur _dein_ Programm auf diese Datenbank zugreift bzw reinschreibt und du dein Programm nur für 32-Bit kompilierst, kann es sowieso keine Probleme geben. Und 64-Bit bringt dir bei vielen Anwendungen so gut wie keinen Vorteil.</p>
<p>Edit: Um es kurz zu fassen: Du bekommst nicht die Antwort, die du willst, weil es diese Antwort nicht gibt. Es ist unmöglich, ohne irgendwelche Information zu sagen, mit wie großen Datentypen das Programm gearbeitet hat, dass die Datenbank erzeugt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417136</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 08 Dec 2007 16:56:26 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 17:19:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Das Programm soll hinterher die Datei wieder korrekt auslesen können, ohne zu wissen, ob in der Datei nun ein int 4 oder 8 Byte groß ist.</p>
</blockquote>
<p>Wenn du dir den Thread aufmerksam durchgelesen hättest, wüsstest du auch, dass ich ganz genau weis, wie groß ein Datentyp in der Datei ist. Stichwort Encoding.</p>
<blockquote>
<p>So, du öffnest die Datei und siehst, sie ist 16 Bytes groß. Was sagt dir das? Nix, genau.</p>
</blockquote>
<p>Siehe oben.</p>
<blockquote>
<p>Lösungen gibt es viele. Z.B. könntest du aufpassen, dass deine Datenstrukturen immer gleich groß sind, egal unter welchem System du kompilierst. Du musst nur einige &quot;weite&quot; Grenzen setzen, z.B. dass ein char immer 8 Bit groß ist.</p>
</blockquote>
<p>Deine vielen Ideen bringen nichts, wenn eine 32 Bit breite Datenbank auf einem 64 Bit System mit einem 32 Bit Programm eingelesen wird. Sobald ich nämlich dynamisch Speicherplatz für einen Integer anfordern möchte, unterscheiden sich die Größen des Datentypes im Heap und dem in der Datei. Fehler.</p>
<blockquote>
<p>Und wenn sowieso nur _dein_ Programm auf diese Datenbank zugreift bzw reinschreibt und du dein Programm nur für 32-Bit kompilierst, kann es sowieso keine Probleme geben.</p>
</blockquote>
<p>Meine Fresse.... Wenn es wirlich so wäre, hätte ich dann diesen Thread eröffnet?</p>
<blockquote>
<p>Und 64-Bit bringt dir bei vielen Anwendungen so gut wie keinen Vorteil.</p>
</blockquote>
<p>Also mal ehrlich, jetzt platzt mir der Kragen!! Das hat nichts mit Performance zu tun!</p>
<blockquote>
<p>Es ist unmöglich, ohne irgendwelche Information zu sagen, mit wie großen Datentypen das Programm gearbeitet hat, dass die Datenbank erzeugt hat.</p>
</blockquote>
<p>In der Datei kann drin stehen, auf welchem System sie generiert wurde.</p>
<blockquote>
<p>Du bekommst nicht die Antwort, die du willst, weil es diese Antwort nicht gibt.</p>
</blockquote>
<p>In deinem Kontext.</p>
<p>Zusammenfassen, ich will in etwa sowas:</p>
<pre><code class="language-cpp">dynamic_sizeof(int)
</code></pre>
<p>Gibt es sowas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417147</guid><dc:creator><![CDATA[CodeOriginator]]></dc:creator><pubDate>Sat, 08 Dec 2007 17:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 17:17:56 GMT]]></title><description><![CDATA[<p>CodeOriginator schrieb:</p>
<blockquote>
<p>Ihr empfehlt mir aus Unwissenheit irgendwelche Alternativmethoden, die ich allerdings nicht brauche. Wenn ihr nichts sinnvolles zum Thema beitragen könnt, und keine Antwort auf die Frage wisst, dann lasst es doch einfach!</p>
</blockquote>
<p>Haha, und du bezeichnest <em>mich</em> als streitsüchtig? Burner!</p>
<p>Falls du tatsächlich nicht einfach nur rumtrollst, solltest du so langsam mal raffen dass du entweder zu wenig Informationen dazu lieferst was du nun konkret machen willst (nicht was du meinst dass dein Problem ist). So wie es sich anhört willst du nicht die &quot;Größe eines Datentyps dynamisch zur Laufzeit erkennen&quot; (was verhältnismäßig trivial ist), sondern herausfinden in welchem Format deine Daten gespeichert sind. Entweder greifst du die Idee mit dem Encoding auf oder, falls auch das nicht möglich ist, versuchst einen Teil der Datei zu lesen und schaust nach ob die Werte plausibel sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417149</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 08 Dec 2007 17:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Datentyps dynamisch zur Laufzeit erkennen? on Sat, 08 Dec 2007 17:34:55 GMT]]></title><description><![CDATA[<p>CodeOriginator schrieb:</p>
<blockquote>
<p>Badestrand schrieb:</p>
<blockquote>
<p>Lösungen gibt es viele. Z.B. könntest du aufpassen, dass deine Datenstrukturen immer gleich groß sind, egal unter welchem System du kompilierst. Du musst nur einige &quot;weite&quot; Grenzen setzen, z.B. dass ein char immer 8 Bit groß ist.</p>
</blockquote>
<p>Deine vielen Ideen bringen nichts, wenn eine 32 Bit breite Datenbank auf einem 64 Bit System mit einem 32 Bit Programm eingelesen wird. Sobald ich nämlich dynamisch Speicherplatz für einen Integer anfordern möchte, unterscheiden sich die Größen des Datentypes im Heap und dem in der Datei. Fehler.</p>
</blockquote>
<p>Quatsch, mit &quot;new int&quot; bekommt der int die gleiche Größe wie mit &quot;int a&quot; - und selbst wenn nicht, der Compiler würde trotzdem die Größe seines &quot;int&quot;s nutzen.<br />
Wieso denkst du eigentlich, ein 32-Bit-Programm würde sich auf einem 64-Bit-System anders verhalten? Das einzige, was anders ist, sind die aufgerufenen OS-Funktionen und die sind für den Fall echt egal.</p>
<p>dynamic_sizeof(int) -&gt; Wenn du so scharf drauf bist, dann frag doch einfach dein OS, ob's mit 64 oder 32 Bit arbeitet.</p>
<p>CodeOriginator schrieb:</p>
<blockquote>
<p>Wenn du dir den Thread aufmerksam durchgelesen hättest, wüsstest du auch, dass ich ganz genau weis, wie groß ein Datentyp in der Datei ist. Stichwort Encoding.</p>
</blockquote>
<p>Wenn du's weißt, wofür dann diesen Thread <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417163</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 08 Dec 2007 17:34:55 GMT</pubDate></item></channel></rss>