<?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[Portabilität: Ganzzahltypen bestimmter Größe]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich suche eine Möglichkeit, die feste Größe von Ganzzahltypen zu garantieren, indem ich sint8/sint16/sint32/sint64 (signed) und uint8/uint16/uint32/uint64 zur Verfügung stelle. In MSVC funktioniert das recht gut (siehe unten), jedoch suche ich nach einer Lösung, die möglichst viele Compiler abdeckt. Bisher versuche ich, verschiedene Compiler über spezielle Defines zu erkennen und entsprechend die Typen zu definieren. Was ich auch versucht habe (aber leider nicht funktioniert) ist, sizeof(typ) und defined(typ) im Preprozessor zu verwenden.</p>
<p>Grüße,<br />
Neku</p>
<pre><code class="language-cpp">#if defined(_MSC_VER)
	// Microsoft Visual Studio

	typedef unsigned __int64 uint64;
	typedef   signed __int64 sint64;
	typedef unsigned __int32 uint32;
	typedef   signed __int32 sint32;
	typedef unsigned __int16 uint16;
	typedef   signed __int16 sint16;
	typedef unsigned __int8  uint8;
	typedef   signed __int8  sint8;

#elif
	...
#else

#  error &quot;Unknown compiler. Please specify fixed-size types in 'Types.hpp'.&quot;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/141313/portabilität-ganzzahltypen-bestimmter-größe</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 13:20:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141313.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Mar 2006 21:01:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Mon, 20 Mar 2006 21:01:43 GMT]]></title><description><![CDATA[<p>Hallo zusammen.</p>
<p>Ich suche eine Möglichkeit, die feste Größe von Ganzzahltypen zu garantieren, indem ich sint8/sint16/sint32/sint64 (signed) und uint8/uint16/uint32/uint64 zur Verfügung stelle. In MSVC funktioniert das recht gut (siehe unten), jedoch suche ich nach einer Lösung, die möglichst viele Compiler abdeckt. Bisher versuche ich, verschiedene Compiler über spezielle Defines zu erkennen und entsprechend die Typen zu definieren. Was ich auch versucht habe (aber leider nicht funktioniert) ist, sizeof(typ) und defined(typ) im Preprozessor zu verwenden.</p>
<p>Grüße,<br />
Neku</p>
<pre><code class="language-cpp">#if defined(_MSC_VER)
	// Microsoft Visual Studio

	typedef unsigned __int64 uint64;
	typedef   signed __int64 sint64;
	typedef unsigned __int32 uint32;
	typedef   signed __int32 sint32;
	typedef unsigned __int16 uint16;
	typedef   signed __int16 sint16;
	typedef unsigned __int8  uint8;
	typedef   signed __int8  sint8;

#elif
	...
#else

#  error &quot;Unknown compiler. Please specify fixed-size types in 'Types.hpp'.&quot;

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1020685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020685</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Mon, 20 Mar 2006 21:01:43 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Mon, 20 Mar 2006 21:12:21 GMT]]></title><description><![CDATA[<p>Moin.</p>
<p>Was ist denn der Hintergrund? Liest du binär geschriebene Daten auf einem anderen OS wieder ein?</p>
<p>Hast du auch eventuelle &quot;Little Endian / Big Endian&quot;-Konvertierungsprobleme berücksichtigt?</p>
<p>Soweit ich weiss, bieten auch nicht alle Compiler einen 64-bittigen Ganzzahltyp an (zumindest ältere Ausgaben) und dann ist die ganze Planung zum Teufel <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="😉"
    /></p>
<p>Wenn ich Strukturen binär wegschreibe und auf einem anderen OS wieder einlese, verwende ich zumeist Byte-Arrays und eine Definitionsdatei. Klar, ich muss mich dann irgendwie um signed/unsigned, Wertigkeiten und Little-/Big-Endian kümmern, aber wenn das einmal erledigt ist, hast du eine Klasse, auf die du immer wieder zurückgreifen kannst.</p>
<p>Cheers<br />
Sid</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020697</guid><dc:creator><![CDATA[Sid2K6]]></dc:creator><pubDate>Mon, 20 Mar 2006 21:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Mon, 20 Mar 2006 21:24:47 GMT]]></title><description><![CDATA[<p>Es wird Teil einer Library, die ich immer wieder verwenden werde. Aktuell brauche ich sie in Verbindung mit einer eigenen Unicode-Stringklasse - aber auch ansonsten benutze ich gerne diese Datentypen, da ich einfach genauer arbeiten kann und in Situationen, wo die Größe wichtig ist, nicht erst umständlich testen muss.</p>
<p>Danke, dass du mich erinnert hast - bei Little/Big-Endian habe ich das gleiche Problem, nur dass ich hier nicht all zu oft wissen muss, um was es sich handelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020709</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Mon, 20 Mar 2006 21:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Mon, 20 Mar 2006 22:18:01 GMT]]></title><description><![CDATA[<p>wie wäre es mit <a href="http://www.boost.org/libs/integer/cstdint.htm" rel="nofollow">boost::cstdint</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020758</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Mon, 20 Mar 2006 22:18:01 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Tue, 21 Mar 2006 06:39:16 GMT]]></title><description><![CDATA[<p>Ich mag boost nicht - aber da könnte ich mir ein paar Ideen abgucken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1020830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1020830</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Tue, 21 Mar 2006 06:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Wed, 22 Mar 2006 10:52:11 GMT]]></title><description><![CDATA[<p>zur zeit komme ich mit</p>
<pre><code class="language-cpp">typedef signed char i8;
typedef unsigned char u8;
typedef signed short i16;
typedef unsigned short u16;
typedef signed int i32;
typedef unsigned int u32;
typedef signed long long i64;
typedef unsigned long long u64;
</code></pre>
<p>gut aus.<br />
wenn das mal nicht mehr reicht, baue ich templates, die den passenden typ finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021579</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 22 Mar 2006 10:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Portabilität: Ganzzahltypen bestimmter Größe on Wed, 22 Mar 2006 16:29:33 GMT]]></title><description><![CDATA[<p>Und genau das haben wir vor einiger Zeit <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-131658.html" rel="nofollow">hier</a> gemacht. Wer also Lust hat, darf sich ruhig bedienen. Alles ohne diese ganzen ifdef's und ohne Boost...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021881</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 22 Mar 2006 16:29:33 GMT</pubDate></item></channel></rss>