<?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[Frage zu typedefs]]></title><description><![CDATA[<p>Ich hab mal versucht möglichst viel von meinem Projekt in visual studio mit /Za zu kompilieren (keine extensions). Dafür war ich einige Zeit beschäftigt, header zu entsorgen, die windows.h inkludieren (das ganze SDK lässt sich nicht mit /Za kompilieren)</p>
<p>Ein Problem das ich hatte, ist das ich OpenGL typedefs auch in manchen, recht oft eingebundenen headern brauche (im grunde nur glint, gluint und glenum).<br />
So, da kann man zwar pimpln, aber das wollte ich erstmal vermeiden.</p>
<p>Ich hab also - mit Bauchschmerzen - diese typedefs selbst in meine header geschrieben. Das hat dann auch eigentlich funktioniert, nur sicher ob man das so lassen kann (und /Za aktiviert) bin ich mir ganz und gar nicht. Hab ich nur Glück gehabt dass es überhaupt funktioniert, was kann alles schief gehen falls opengl z.B. zu einer anderen Zeit oder auf einer anderen plattform den typedef im eigenen header ändert? Undefined? Compilerfehler? Linkerfehler?</p>
<p>Bin grade etwas am zweifeln, ob man es so lassen kann, oder ob ich doch lieber wieder zum alten code zurückkehren will. Oder es idealerweise einen opengl header dafür gibt. Zugegebenermaßen kurze google Suche hat dazu nichts zutage gefördert.</p>
<p>Prinzipiell soll das ganze auf mehreren Plattformen laufen können, deswegen hab ich versucht, nachdem ich gelesen habe der gcc sei sehr pedantisch, möglichst ohne compiler extensions zu schreiben. (de facto war glaub ich momentan das einzige problem, das ich nie newlines am Ende hatte)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300851/frage-zu-typedefs</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 15:29:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300851.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Mar 2012 16:54:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu typedefs on Mon, 12 Mar 2012 16:54:30 GMT]]></title><description><![CDATA[<p>Ich hab mal versucht möglichst viel von meinem Projekt in visual studio mit /Za zu kompilieren (keine extensions). Dafür war ich einige Zeit beschäftigt, header zu entsorgen, die windows.h inkludieren (das ganze SDK lässt sich nicht mit /Za kompilieren)</p>
<p>Ein Problem das ich hatte, ist das ich OpenGL typedefs auch in manchen, recht oft eingebundenen headern brauche (im grunde nur glint, gluint und glenum).<br />
So, da kann man zwar pimpln, aber das wollte ich erstmal vermeiden.</p>
<p>Ich hab also - mit Bauchschmerzen - diese typedefs selbst in meine header geschrieben. Das hat dann auch eigentlich funktioniert, nur sicher ob man das so lassen kann (und /Za aktiviert) bin ich mir ganz und gar nicht. Hab ich nur Glück gehabt dass es überhaupt funktioniert, was kann alles schief gehen falls opengl z.B. zu einer anderen Zeit oder auf einer anderen plattform den typedef im eigenen header ändert? Undefined? Compilerfehler? Linkerfehler?</p>
<p>Bin grade etwas am zweifeln, ob man es so lassen kann, oder ob ich doch lieber wieder zum alten code zurückkehren will. Oder es idealerweise einen opengl header dafür gibt. Zugegebenermaßen kurze google Suche hat dazu nichts zutage gefördert.</p>
<p>Prinzipiell soll das ganze auf mehreren Plattformen laufen können, deswegen hab ich versucht, nachdem ich gelesen habe der gcc sei sehr pedantisch, möglichst ohne compiler extensions zu schreiben. (de facto war glaub ich momentan das einzige problem, das ich nie newlines am Ende hatte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190982</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Mon, 12 Mar 2012 16:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu typedefs on Mon, 12 Mar 2012 17:08:18 GMT]]></title><description><![CDATA[<p>Solange du wirklich den zu den OpenGL typedefs identischen Typ benutzt sollte es keine Probleme geben; die bekommst du erst, wenn sich die Typen unterscheiden. Die Größe der Typen sind allerdings recht genau definiert, daher sollte die Wahrscheinlichkeit sich in den Fuß zu schießen recht niedrig sein, solange du die &lt;cstdint&gt; typedefs nutzt. Um zu gucken was da wie genau definiert ist, rate ich dazu mal bei <a href="http://opengl.org" rel="nofollow">opengl.org</a> vorbeizuschauen und dir die core profile Spezifikation anzugucken:<br />
<a href="http://www.opengl.org/registry/doc/glspec42.core.20110808.pdf" rel="nofollow">http://www.opengl.org/registry/doc/glspec42.core.20110808.pdf</a><br />
(Siehe 2.3 / Seite 16)</p>
<p>Allerdings: Wie kann man denn die OpenGL Funktionsdeklarationen kennen, aber nicht die Typedefs? Keine Ahnung wie das funktionieren soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190985</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 12 Mar 2012 17:08:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu typedefs on Mon, 12 Mar 2012 17:45:53 GMT]]></title><description><![CDATA[<p>Erstmal danke für den link.</p>
<blockquote>
<p>Allerdings: Wie kann man denn die OpenGL Funktionsdeklarationen kennen, aber nicht die Typedefs? Keine Ahnung wie das funktionieren soll.</p>
</blockquote>
<p>Bin mir nicht sicher ob ich dich da richtig verstehe. Im header selbst muss ich die OpenGL funktionsdeklarationen gar nicht kennen? Aber den glint wird halt in einer funktion als parameter benötigt, da ich das später an opengl weitergebe.<br />
Beispiel:</p>
<p>OftenIncludedHeader.h</p>
<pre><code class="language-cpp">typedef unsigned int GLuint;
//oder:
//#include &quot;SDL_opengl.h&quot; (da steckt SDL.h, GL.h und windows.h noch dahinter)

class foo {
//...
public:
void bar(GLuint);
//anderes zeug, das gaaaanz wichtig ist und deshalb wird dieser header oft eingebunden
};
</code></pre>
<p>Okay, wenn ich mir das so anschau, stinkt das design bei näherer Betrachtung. (Verletzung von single responsibilty principle) Glaube wollte das mal umarbeiten, aber weil da wohl so viel dranhängt hab ichs bisher verschoben.</p>
<p>Ich hab die typedefs einfach 1 zu 1 aus der gl.h unter C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\GL kopiert.</p>
<blockquote>
<p>An implementation must use exactly the number of<br />
bits indicated in the table to represent a GL type.</p>
</blockquote>
<p>Das ist glaub ich der wesentliche Punkt. Da ich selbst in die opengl typedefs gar nichts reinschreibe, sondern die nur bekomme, rumreiche und wieder zurückgebe bin ich wohl sicher, solange mein eigener typedef über 32 bit bleibt.</p>
<p>Glaube meine ursprüngliche Frage ist also geklärt, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190991</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Mon, 12 Mar 2012 17:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu typedefs on Mon, 12 Mar 2012 18:40:50 GMT]]></title><description><![CDATA[<p>Mal ein Vorschlag: Nimm für deine Klasse da einfach normale Typen, dann bleibt das Interface sauber und vor allem über alle Plattformen konsistent. Umwandlungen machst du nur hinter den Kulissen, diese Typen haben im Header doch gar nichts verloren. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2191001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191001</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 12 Mar 2012 18:40:50 GMT</pubDate></item></channel></rss>