<?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[Makro für namespace-Erzeugung schreiben]]></title><description><![CDATA[<p>Ich habe ein Projekt, bei dem ich mehrere Instanzen einer Anwendung gleichzeitig laufen lassen möchte. Um den Code nicht mehrmals hinschreiben zu müssen und Namenskonflikte zu vermeiden, habe ich mir gedacht, Namespaces zu verwenden. Das soll so aussehen:</p>
<pre><code class="language-cpp">namespace n1 {
   #include &quot;datei.ct&quot;
}

namespace n2 {
   #include &quot;datei.ct&quot;
}
</code></pre>
<p>Das Ganze möchte ich nun abkürzen, sodass man nur den Namen des Namespaces und die zu inkludierende Datei angeben muss. Ich habe also ein Makro geschrieben:</p>
<pre><code class="language-cpp">#define namesp(inkl, name) namespace name { inkl }
</code></pre>
<p>inkl enthält hierbei schon die komplette Direktive #include &quot;datei.ct&quot;.<br />
Das Problem hierbei ist, dass ein #include in einer neuen Zeile stehen muss, in einem Makro kriege ich das aber nicht hin. Auch die Klammer zu am Ende (}) muss in einer neuen Zeile stehen.</p>
<p>Geht so etwas überhaupt mit einem Makro oder geht das schöner mit Templates o.ä.?</p>
<p>Danke für eure Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210961/makro-für-namespace-erzeugung-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 18:41:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210961.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Apr 2008 10:02:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 10:02:12 GMT]]></title><description><![CDATA[<p>Ich habe ein Projekt, bei dem ich mehrere Instanzen einer Anwendung gleichzeitig laufen lassen möchte. Um den Code nicht mehrmals hinschreiben zu müssen und Namenskonflikte zu vermeiden, habe ich mir gedacht, Namespaces zu verwenden. Das soll so aussehen:</p>
<pre><code class="language-cpp">namespace n1 {
   #include &quot;datei.ct&quot;
}

namespace n2 {
   #include &quot;datei.ct&quot;
}
</code></pre>
<p>Das Ganze möchte ich nun abkürzen, sodass man nur den Namen des Namespaces und die zu inkludierende Datei angeben muss. Ich habe also ein Makro geschrieben:</p>
<pre><code class="language-cpp">#define namesp(inkl, name) namespace name { inkl }
</code></pre>
<p>inkl enthält hierbei schon die komplette Direktive #include &quot;datei.ct&quot;.<br />
Das Problem hierbei ist, dass ein #include in einer neuen Zeile stehen muss, in einem Makro kriege ich das aber nicht hin. Auch die Klammer zu am Ende (}) muss in einer neuen Zeile stehen.</p>
<p>Geht so etwas überhaupt mit einem Makro oder geht das schöner mit Templates o.ä.?</p>
<p>Danke für eure Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493416</guid><dc:creator><![CDATA[fep2k]]></dc:creator><pubDate>Thu, 17 Apr 2008 10:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 10:22:47 GMT]]></title><description><![CDATA[<p>fep2k schrieb:</p>
<blockquote>
<p>Das Problem hierbei ist, dass ein #include in einer neuen Zeile stehen muss, in einem Makro kriege ich das aber nicht hin...</p>
</blockquote>
<p>Umbruch in einem Makro geht mit &quot;\&quot;</p>
<pre><code class="language-cpp">#define GANZBOESESMAKRO \
  foo();
</code></pre>
<p>fep2k schrieb:</p>
<blockquote>
<p>Geht so etwas überhaupt mit einem Makro oder geht das schöner mit Templates o.ä.?</p>
</blockquote>
<p>Templates können keine Includes generieren (Include gehört zu wie alle Direkttiven die mit # beginnen zum Präprocessor, Templates werden erst in einem späteren Schritt aufgelöst).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493435</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 17 Apr 2008 10:22:47 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 10:38:30 GMT]]></title><description><![CDATA[<p>Ok, der Backslash ermöglicht es mir, nach einem Zeilenumbruch das Makro in der nächsten Zeile fortzusetzen.<br />
Wenn das Makro aber expandiert wird, gehen die Zeilenumbrüche verloren.<br />
Der &quot;\&quot; dient nur dazu, das Makro übersichtlicher zu machen oder sehe ich das falsch?<br />
Was ich brauche, ist ein &quot;tatsächlicher&quot; Zeilenumbruch in dem Code, den mein Makro erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493447</guid><dc:creator><![CDATA[fep2k]]></dc:creator><pubDate>Thu, 17 Apr 2008 10:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 11:18:59 GMT]]></title><description><![CDATA[<p>fep2k schrieb:</p>
<blockquote>
<p>Ok, der Backslash ermöglicht es mir, nach einem Zeilenumbruch das Makro in der nächsten Zeile fortzusetzen.<br />
Wenn das Makro aber expandiert wird, gehen die Zeilenumbrüche verloren.</p>
</blockquote>
<p>Da Makros aber nicht der Generierung von Code zur Weitervorlage dienen ist dies völlig egal.</p>
<p>fep2k schrieb:</p>
<blockquote>
<p>Der &quot;\&quot; dient nur dazu, das Makro übersichtlicher zu machen oder sehe ich das falsch?<br />
Was ich brauche, ist ein &quot;tatsächlicher&quot; Zeilenumbruch in dem Code, den mein Makro erzeugt.</p>
</blockquote>
<p>Darf ich fragen: Wozu?</p>
<p>Der Normale Ablauf ist das Code compiliert, und nicht auf Zwischenschritte des Präprozessors/Compilers/Linkers zurückgegriffen wird.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493478</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 17 Apr 2008 11:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 12:02:46 GMT]]></title><description><![CDATA[<p>Ich will meine Namespaces folgendermaßen defnieren:</p>
<pre><code class="language-cpp">namespace n1 {
   #include &quot;datei.ct&quot;
}

namespace n2 {  
   #include &quot;datei.ct&quot;
}
</code></pre>
<p>Wenn ich diese Abschnitte in eine Zeile schreibe, also:</p>
<pre><code class="language-cpp">namespace n1 {#include &quot;datei.ct&quot; }
</code></pre>
<p>bekomme ich die Fehlermeldung: &quot;stray '#' in program&quot;.<br />
Das #include muss in einer eigenen Zeile stehen und es dürfen nach dem #include keine weiteren Zeichen stehen.</p>
<p>Das Ganze brauche ich für meine Studienarbeit, mein Betreuer möchte, dass man die Namespaces schön mit einer Zeile definieren kann.<br />
Aber so schön geht das wohl nicht, oder?</p>
<p>Danke für die Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493514</guid><dc:creator><![CDATA[fep2k]]></dc:creator><pubDate>Thu, 17 Apr 2008 12:02:46 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 12:15:38 GMT]]></title><description><![CDATA[<p>Ich würde die Inkludes Ausserhalb des namespaces machen.<br />
Dafür die Typen (im Headerfile) schon in den korrekten namespace rücken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493533</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 17 Apr 2008 12:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Makro für namespace-Erzeugung schreiben on Thu, 17 Apr 2008 15:38:25 GMT]]></title><description><![CDATA[<p>Wenn du mehrere Instanzen von irgendwas haben willst dann leg doch einfach mehrere Instanzen an.<br />
Solange du überall dort auf globale/statische Variablen verzichtest wo es &quot;böse&quot; ist, und auch sonst einigermassen &quot;sauber&quot; programmierst kann dabei eigentlich nix daneben gehen. Ich sehe auf jeden Fall keinen Grund den Code zu duplizieren, mit oder ohne includes, mit oder ohne Namespaces.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493689</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 17 Apr 2008 15:38:25 GMT</pubDate></item></channel></rss>