<?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[Library-Collisions wie umgehen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Problem: Ich nutze in meiner Software eine Klasse, die basic typedefines wie</p>
<pre><code class="language-cpp">#define int Boolean
</code></pre>
<p>nutzt (nicht meine Idee/Implementierung). Nun binde ich an anderer Stelle die ACE/TAO-Corba-Implementierung ein, die ihrerseits ein Boolean definiert. Da knallt es dann natürlich. Jetzt möchte ich ungern das define und damit den ganzen Code ändern, der es benutzt, die Corba-Library hingegen kann ich schlecht ändern.<br />
Ein Notbehelf wäre</p>
<pre><code class="language-cpp">#undef Boolean
#include &lt;ace/corba.h&gt;
</code></pre>
<p>aber wenn danach dann noch eine Klasse auf das alte include angewiesen ist, geht das ja auch schief. Wahrscheinlich muss ich also jedes einzelne define, bei dem das passiert, wiederherstellen?!<br />
Und was mache ich bei typedefs? Die kann ich ja nicht so einfach undeffen...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319330/library-collisions-wie-umgehen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 00:59:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319330.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Aug 2013 14:59:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Wed, 14 Aug 2013 14:59:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgendes Problem: Ich nutze in meiner Software eine Klasse, die basic typedefines wie</p>
<pre><code class="language-cpp">#define int Boolean
</code></pre>
<p>nutzt (nicht meine Idee/Implementierung). Nun binde ich an anderer Stelle die ACE/TAO-Corba-Implementierung ein, die ihrerseits ein Boolean definiert. Da knallt es dann natürlich. Jetzt möchte ich ungern das define und damit den ganzen Code ändern, der es benutzt, die Corba-Library hingegen kann ich schlecht ändern.<br />
Ein Notbehelf wäre</p>
<pre><code class="language-cpp">#undef Boolean
#include &lt;ace/corba.h&gt;
</code></pre>
<p>aber wenn danach dann noch eine Klasse auf das alte include angewiesen ist, geht das ja auch schief. Wahrscheinlich muss ich also jedes einzelne define, bei dem das passiert, wiederherstellen?!<br />
Und was mache ich bei typedefs? Die kann ich ja nicht so einfach undeffen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345782</guid><dc:creator><![CDATA[banshee]]></dc:creator><pubDate>Wed, 14 Aug 2013 14:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Wed, 14 Aug 2013 15:03:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Und was mache ich bei typedefs? Die kann ich ja nicht so einfach undeffen...</p>
</blockquote>
<p>Die kannst du in einen eigenen namespace packen.</p>
<blockquote>
<p>nicht meine Idee</p>
</blockquote>
<p>Gib es demjenigen zurueck, der das Problem verursacht hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345784</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 14 Aug 2013 15:03:43 GMT</pubDate></item><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Wed, 14 Aug 2013 15:03:50 GMT]]></title><description><![CDATA[<p>Ich würd wohl einfach hergehen und aus</p>
<pre><code>#define int Boolean
</code></pre>
<pre><code>#define int Bool
</code></pre>
<p>machen. Und dann replace all machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345785</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 14 Aug 2013 15:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Wed, 14 Aug 2013 15:12:00 GMT]]></title><description><![CDATA[<p>banshee schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#define int Boolean
</code></pre>
</blockquote>
<p>Du meinst</p>
<pre><code class="language-cpp">#define Boolean int
</code></pre>
<p>Die Lösung ist völlig simpel: Das #define einfach auf</p>
<pre><code class="language-cpp">typedef int Boolean;
</code></pre>
<p>ändern. Da das typedef global ist, ändert sich der Code in deiner Library nicht. Corba verwendet Namespaces, damit umgehst du die Kollision.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2345788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2345788</guid><dc:creator><![CDATA[hää]]></dc:creator><pubDate>Wed, 14 Aug 2013 15:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Thu, 15 Aug 2013 08:10:28 GMT]]></title><description><![CDATA[<p>Müssen diese beiden Abartigkeiten denn unbedingt in der gleichen Übersetzungseinheit verwendet werden?</p>
<p>Wenn ja, hast du ja bereits brauchbare Lösungen. Namespaces bieten sich in C++ natürlich an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346001</guid><dc:creator><![CDATA[badgerbadgerbadger]]></dc:creator><pubDate>Thu, 15 Aug 2013 08:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to Library-Collisions wie umgehen? on Thu, 15 Aug 2013 10:18:24 GMT]]></title><description><![CDATA[<p>Ich würde nur Namespaces dafür verwenden.</p>
<p>Hatte mal das Vergnügen einer nicht entdeckten typedef struct Kollision. Erzeugte bösartige Fehler, die auf dem ersten Blick nicht erkennbar waren. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Je nach Größe einer Bib, könnte man auch ein Wrapper entwickeln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2346027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2346027</guid><dc:creator><![CDATA[Bitte ein Bit]]></dc:creator><pubDate>Thu, 15 Aug 2013 10:18:24 GMT</pubDate></item></channel></rss>