<?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[sizeof liefert unerwartetes ergebniss]]></title><description><![CDATA[<p>hallo leutz,</p>
<p>sehe gerade den baum vor lauter wäldern nicht ..</p>
<p>fuer folgende struktur haette ich angenommen dass sizeof als groesse die anzahl an bytes zurueckliefert:</p>
<pre><code>typedef unsigned char uchar;
typedef unsigned long ulong;

struct T_ID3v2Header
{
 uchar id[3];
 uchar t_majVer;
 uchar t_minVer;
 uchar t_flags;
 ulong t_size;
};

int main(int argc, char *argv[])
{
  size_t temp = sizeof(T_ID3v2Header);
  return 0;
}
</code></pre>
<p>ich zaehle fuer obige struktur 10 bytes aber bekomme als ergebniss 12 <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>
<p>jemand ne idee warum das so ist?<br />
thnx vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271874/sizeof-liefert-unerwartetes-ergebniss</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:10:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271874.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Aug 2010 13:05:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:05:35 GMT]]></title><description><![CDATA[<p>hallo leutz,</p>
<p>sehe gerade den baum vor lauter wäldern nicht ..</p>
<p>fuer folgende struktur haette ich angenommen dass sizeof als groesse die anzahl an bytes zurueckliefert:</p>
<pre><code>typedef unsigned char uchar;
typedef unsigned long ulong;

struct T_ID3v2Header
{
 uchar id[3];
 uchar t_majVer;
 uchar t_minVer;
 uchar t_flags;
 ulong t_size;
};

int main(int argc, char *argv[])
{
  size_t temp = sizeof(T_ID3v2Header);
  return 0;
}
</code></pre>
<p>ich zaehle fuer obige struktur 10 bytes aber bekomme als ergebniss 12 <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>
<p>jemand ne idee warum das so ist?<br />
thnx vorab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936609</guid><dc:creator><![CDATA[pepe75]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:08:48 GMT]]></title><description><![CDATA[<p>padding</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936611</guid><dc:creator><![CDATA[padding]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:08:48 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:09:48 GMT]]></title><description><![CDATA[<p>Strukturenoptimierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936613</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:10:17 GMT]]></title><description><![CDATA[<p>lässt sich compilerspezifisch abstellen:<br />
#pragma pack(push,1)<br />
// struktur<br />
#pragma pack(pop)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936614</guid><dc:creator><![CDATA[pragma]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:11:32 GMT]]></title><description><![CDATA[<p>sorry,</p>
<p>ausgiebiger googlen haette mir das posten erspart:</p>
<p>padding ist das schluesselwort:</p>
<p>bei visual kann man unter projekt-einstellungen das padding einstellen.<br />
das war bei mir auf standard eingestellt. waehlt man dort 1Byte, dann liefert sizeof das richtige ergebnis.</p>
<p>trotzdem danke.<br />
gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936615</guid><dc:creator><![CDATA[pepe75]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:11:32 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 13:16:13 GMT]]></title><description><![CDATA[<p>Lieber manuell viá <em>#pragma</em> machen, da Padding ja nicht aus Spaß erfunden wurde, außerdem wird das sicher nicht in jedem deiner Projekte benötigt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936619</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 05 Aug 2010 13:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 14:09:40 GMT]]></title><description><![CDATA[<p>pepe75 schrieb:</p>
<blockquote>
<p>waehlt man dort 1Byte, dann liefert sizeof das richtige ergebnis.</p>
</blockquote>
<p>sizeof liefert _immer_ das richtige Ergebnis, egal welches Padding. Das die Struktur abhängig vom Padding unterschiedliche Größen hat ist kein Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936644</guid><dc:creator><![CDATA[loks]]></dc:creator><pubDate>Thu, 05 Aug 2010 14:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 15:38:57 GMT]]></title><description><![CDATA[<p>Ist das nicht prinzipiell ein Fehlerherd bei statischen/dynamischen Bibliotheken?</p>
<p>Angenommen man hat :</p>
<pre><code class="language-cpp">struct data
{
  char foo;
  int bar;
};

void foobar(data&amp; dat);
</code></pre>
<p>Dann kann es doch durchaus sein dass die kompilierte Funktion der Lib folgendes erwartet</p>
<p>Byte 1: foo<br />
Byte 2: bar<br />
Byte 3: bar<br />
Byte 4: bar<br />
Byte 5: bar</p>
<p>aber der Nutzer ungewollt folgendes übergibt</p>
<p>Byte 1: foo<br />
Byte 2: padding<br />
Byte 3: padding<br />
Byte 4: padding<br />
Byte 5: bar<br />
Byte 6: bar<br />
Byte 7: bar<br />
Byte 8: bar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936680</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Thu, 05 Aug 2010 15:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 21:47:43 GMT]]></title><description><![CDATA[<p>Icematix schrieb:</p>
<blockquote>
<p>Ist das nicht prinzipiell ein Fehlerherd bei statischen/dynamischen Bibliotheken?</p>
</blockquote>
<p>Ja. Deshalb fängt bei mir jeder Header für Bibliotheksfunktionen so an:</p>
<pre><code class="language-cpp">#ifdef __BORLANDC__
#	pragma option -RT-
#	pragma option -b
#	ifdef __WIN32__
#		pragma option -a4
#		pragma option -pc
#	else
#		pragma option -a2
#		pragma option -po
#	endif
#endif
</code></pre>
<p>und so werden sie beendet:</p>
<pre><code class="language-cpp">#ifdef __BORLANDC__
#	pragma option -RT.
#	pragma option -b.
#	pragma option -a.
#	pragma option -p.
#endif
</code></pre>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936829</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Thu, 05 Aug 2010 21:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Thu, 05 Aug 2010 22:34:44 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Icematix schrieb:</p>
<blockquote>
<p>Ist das nicht prinzipiell ein Fehlerherd bei statischen/dynamischen Bibliotheken?</p>
</blockquote>
<p>Ja. Deshalb fängt bei mir jeder Header für Bibliotheksfunktionen so an:</p>
<pre><code class="language-cpp">#ifdef __BORLANDC__
#	pragma option -RT-
#	pragma option -b
#	ifdef __WIN32__
#		pragma option -a4
#		pragma option -pc
#	else
#		pragma option -a2
#		pragma option -po
#	endif
#endif
</code></pre>
<p>und so werden sie beendet:</p>
<pre><code class="language-cpp">#ifdef __BORLANDC__
#	pragma option -RT.
#	pragma option -b.
#	pragma option -a.
#	pragma option -p.
#endif
</code></pre>
<p>mfg Martin</p>
</blockquote>
<p>Interessant und was macht das jetzt genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936841</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 05 Aug 2010 22:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 01:09:32 GMT]]></title><description><![CDATA[<p>Irgendwelche Annahmen dahingehend, wie das Layout einer Struktur/Klasse im Speicher aussieht, sollten einfach nicht gemacht werden. Wenn es um Daten-Ein/Ausgabe geht, muss man sich eben die Bytes manuell zusammensetzen etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936861</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 06 Aug 2010 01:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 01:24:23 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Irgendwelche Annahmen dahingehend, wie das Layout einer Struktur/Klasse im Speicher aussieht, sollten einfach nicht gemacht werden. Wenn es um Daten-Ein/Ausgabe geht, muss man sich eben die Bytes manuell zusammensetzen etc.</p>
</blockquote>
<p>Das sehe ich nicht so. Header in Dateiformaten kann man ruhig in so structs packen, das ist nämlich saupraktisch. Dazu noch ein wenig #pragma oder __attribute__((packed)) und gut ists. Falls Du gewöhnlich Software für MS udn Linux codest, kannst Du natürlich mit #if beides machen. Falls Du sogar für zukünftige Plattformen baust, die noch keiner kennt, mach's halt Byteweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936862</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 06 Aug 2010 01:24:23 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 01:38:34 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>das ist nämlich saupraktisch</p>
</blockquote>
<p>genau</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936863</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 06 Aug 2010 01:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 06:19:18 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Interessant und was macht das jetzt genau?</p>
</blockquote>
<pre><code class="language-cpp">#pragma option -RT-
</code></pre>
<p>Das schaltet Runtimetypeinformation aus.</p>
<pre><code class="language-cpp">#pragma option -b
</code></pre>
<p>Sorgt dafür, daß enums die gleiche Größe wie ints haben.</p>
<pre><code class="language-cpp">#pragma option -aX
</code></pre>
<p>Schaltet das Padding in Strukturen auf X Bytes.</p>
<pre><code class="language-cpp">#pragma option -pX
</code></pre>
<p>Setzt die Aufrufkonventionen.</p>
<p>Am Ende werden einfach alle Parameter wieder auf den Ursprungswert gesetzt.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936890</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 06 Aug 2010 06:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 06:27:08 GMT]]></title><description><![CDATA[<p>mgaeckler schrieb:</p>
<blockquote>
<p>Am Ende werden einfach alle Parameter wieder auf den Ursprungswert gesetzt.</p>
</blockquote>
<p>Auf den Ursprungswert oder den Defaultwert?<br />
Damit meine ich, soll man nicht</p>
<pre><code class="language-cpp">#pragma option push/pop
</code></pre>
<p>kennen und benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936893</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 06 Aug 2010 06:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to sizeof liefert unerwartetes ergebniss on Fri, 06 Aug 2010 12:36:18 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>mgaeckler schrieb:</p>
<blockquote>
<p>Am Ende werden einfach alle Parameter wieder auf den Ursprungswert gesetzt.</p>
</blockquote>
<p>Auf den Ursprungswert oder den Defaultwert?<br />
Damit meine ich, soll man nicht</p>
<pre><code class="language-cpp">#pragma option push/pop
</code></pre>
<p>kennen und benutzen?</p>
</blockquote>
<p>Hab jetzt gerade kein BC++ zur Hand. Aber soweít ich weiß bewirkt dieses Pragma</p>
<pre><code class="language-cpp">#    pragma option -RT.
</code></pre>
<p>daß die option RT auf den anfänglichen Wert, wie er am Beginn der Datei war, gesetzt wird.</p>
<pre><code class="language-cpp">#pragma option push/pop
</code></pre>
<p>Kenne ich nicht.</p>
<p>Ich benutzte teilweise noch Borland C++ 5.02 (nicht den Builder), es kann sein, daß neuere Compiler hier etwas besser sind.</p>
<p>mfg Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937090</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Fri, 06 Aug 2010 12:36:18 GMT</pubDate></item></channel></rss>