<?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[Macros ersetzen nicht alles?]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe gedacht, das der Präprozessor vor dem Kompilieren einmal durchläuft und alle Macros in dem Quelltext ersetzen. Da habe ich einfach mal aus Jux und Dollerei folgendes ausprobiert, was aber nicht klappt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#ifndef IRW
#define IRW out
#endif

int main()
{
	std::cIRW&lt;&lt;&quot;hallo&quot;std::endl;
	return 0;
}
</code></pre>
<p>Ich dachte, es wird alles wortwörtlich übersetzt... oder habe ich das falsch verstanden und der Präprozessor verändert so etwas nicht?</p>
<p>Gruß Speedy_92</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218525/macros-ersetzen-nicht-alles</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 02:25:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218525.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Jul 2008 22:05:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:05:42 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe gedacht, das der Präprozessor vor dem Kompilieren einmal durchläuft und alle Macros in dem Quelltext ersetzen. Da habe ich einfach mal aus Jux und Dollerei folgendes ausprobiert, was aber nicht klappt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#ifndef IRW
#define IRW out
#endif

int main()
{
	std::cIRW&lt;&lt;&quot;hallo&quot;std::endl;
	return 0;
}
</code></pre>
<p>Ich dachte, es wird alles wortwörtlich übersetzt... oder habe ich das falsch verstanden und der Präprozessor verändert so etwas nicht?</p>
<p>Gruß Speedy_92</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551255</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:11:18 GMT]]></title><description><![CDATA[<p>Der Präprozessor ersetzt wohl keine Zeichenfolgen, die mitten in anderen Zeichenfolgen vorkommen, sondern nur ganze Wörter.</p>
<p>Das sollte gehen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#define TEST cout

int main()
{
    std::TEST &lt;&lt; &quot;test&quot; &lt;&lt; endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1551259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551259</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:12:48 GMT]]></title><description><![CDATA[<p>Ok, aber ich dachte das es ja vielleicht doch geht... Naja schade drum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551260</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:19:15 GMT]]></title><description><![CDATA[<p>[cpp]#define IRW <strong>c</strong>out<br />
std::<strong>IRW</strong>&lt;&lt;&quot;hallo&quot;**&lt;&lt;**std::endl[/cpp]</p>
<p>Wenn du &quot;cIRW&quot; schreibst, ist das ein Ausdruck, der dem Compiler unbekannt ist. Du musst also schon erweitern, wie oben gezeigt. <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>Btw, Makros bzw. besser &quot;typedefs&quot; dienen lediglich dem eigenen Komfort. Außer du willst den Code halt absichtlich unleserlich halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551262</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:23:00 GMT]]></title><description><![CDATA[<p>Speedy_92 schrieb:</p>
<blockquote>
<p>Ok, aber ich dachte das es ja vielleicht doch geht... Naja schade drum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>das wuerde doch nur zu massig problemen fuehren. denk einfach nur mal an die guten macros max() und min() oder _T()</p>
<p>furchtbar wenn der praeprozessor so dumm waere... dann koennte man ihn naemlich garnicht verwenden... er ist ja schon so viel zu dumm und macht dauernd probleme <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1551264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551264</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:34:58 GMT]]></title><description><![CDATA[<p>Stimmt auch wieder. Hatte nur gedacht, dass man dadurch vielleicht seinen Code besser schützen könne. Weil falls es irgendwer schafft an den Code eines meiner Programme heranzukommen wäre dies von großem Vorteil. Dann würde ich vor dem Kompilieren eine Kopie von den Header-, Quelldateien, usw. machen und dann die Ganzen Dateien durch ein Programm laufen lassen, welche sie in dieser Art &quot;verunstalten&quot;. Dadurch wäre es für Fremde ein großer Aufwand, den Quelltext zu lesen.</p>
<p>*Edit:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#define TEST &lt;&lt;
#define Bla cout
#define Blub cout
#define KA &lt;&lt;
int main()
{
	std::Bla TEST &quot;test&quot; TEST std::endl;
	std::Blub KA &quot;verwirrend&quot; TEST std::endl;
    return 0;
}
</code></pre>
<p>So z.B. würde es schon reichen um dem Leser den Spaß zu verderben <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/1551267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551267</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:34:58 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:39:17 GMT]]></title><description><![CDATA[<p>Ich denke mal soooo wertvoll wird dein Code schon nicht sein <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/1551271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551271</guid><dc:creator><![CDATA[ssss]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:46:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Stimmt auch wieder. Hatte nur gedacht, dass man dadurch vielleicht seinen Code besser schützen könne. Weil falls es irgendwer schafft an den Code eines meiner Programme heranzukommen wäre dies von großem Vorteil. Dann würde ich vor dem Kompilieren eine Kopie von den Header-, Quelldateien, usw. machen und dann die Ganzen Dateien durch ein Programm laufen lassen, welche sie in dieser Art &quot;verunstalten&quot;. Dadurch wäre es für Fremde ein großer Aufwand, den Quelltext zu lesen.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Sorry, aber ich habe noch nie grösseren Mist gehört. <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="😉"
    /><br />
Ich hoffe jetzt mal, dass es einfach schon spaet und du seeeeehr müde bist.. <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/1551273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551273</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:50:36 GMT]]></title><description><![CDATA[<p>Speedy_92 schrieb:</p>
<blockquote>
<p>Stimmt auch wieder. Hatte nur gedacht, dass man dadurch vielleicht seinen Code besser schützen könne. Weil falls es irgendwer schafft an den Code eines meiner Programme heranzukommen wäre dies von großem Vorteil.</p>
</blockquote>
<p>Leichter Anfall von Paranoia?<br />
Ich denke kaum, dass sich jemand bemüht, um deinen Code zu stehlen und zu vermarkten :p</p>
<p>Speedy_92 schrieb:</p>
<blockquote>
<p>Dadurch wäre es für Fremde ein großer Aufwand, den Quelltext zu lesen.</p>
</blockquote>
<p>Und für dich genauso. Wenn du noch eine reine, noch nicht verunstaltete Form hättest, könnte <em>der Feind</em> ebenso an diese gelangen.</p>
<p>Denk immer an die <em>Achse des Bösen</em> :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551274</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 22:51:38 GMT]]></title><description><![CDATA[<p>Ja, wenn du das sagst, dann wird es wohl stimmen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Gute Nacht allerseits, bin schon seeeeeeeeehr müde, wie drakon schon meinte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551275</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Mon, 21 Jul 2008 22:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 23:06:59 GMT]]></title><description><![CDATA[<p>Wenn du wirklich obfuscated programmieren willst, solltest du richtige Makromagie benutzen:</p>
<pre><code class="language-cpp">#define AB(x) x ## out&lt;&lt;
#define SD(x) s ## x ## d::

int main()
{
    SD(t)AB(c)&quot;Hello World!&quot;;
}
</code></pre>
<p><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/1551283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551283</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Mon, 21 Jul 2008 23:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 23:32:07 GMT]]></title><description><![CDATA[<p>Seltsam... die meisten Leute schaffen es doch auch ohne solche komischen Tricks, unlesbaren Code zu schreiben... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551291</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 21 Jul 2008 23:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Mon, 21 Jul 2008 23:42:50 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<p>Wenn du wirklich obfuscated programmieren willst, solltest du richtige Makromagie benutzen:</p>
<pre><code class="language-cpp">#define AB(x) x ## out&lt;&lt;
#define SD(x) s ## x ## d::

int main()
{
    SD(t)AB(c)&quot;Hello World!&quot;;
}
</code></pre>
<p><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>
</blockquote>
<p>Also die Macromagie gefällt mir so langsam <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Tia... ich brauche halt ein wenig mehr Mittel um unleserlichen Code zu schreiben <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/1551293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551293</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Mon, 21 Jul 2008 23:42:50 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Tue, 22 Jul 2008 00:05:25 GMT]]></title><description><![CDATA[<p>Wie wäre es mit sowas?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

#define _private public
#define _public private
#define _class struct
#define _struct class
#define _void int
#define _int void
#define _std xml
#define _xml std
#define _for while
#define _while for

#define MAIN(x)       \
        int main()    \
        {             \
            x;        \
            return 0; \
        }

_struct CTest
{
_private:
    static _int test(_void var) { _xml::cout &lt;&lt; &quot;test &quot; &lt;&lt; var &lt;&lt; _xml::endl; };
};

MAIN(_while (_void i = 0; i &lt; 5; ++i) { CTest::test(i); })

// usw. :D
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551297</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 22 Jul 2008 00:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Tue, 22 Jul 2008 00:08:57 GMT]]></title><description><![CDATA[<p>Sieht wirklich interessant aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Wenn ich mal lange Weile habe schreibe ich ein Programm, welches den Code so &quot;schön&quot; macht <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/1551298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551298</guid><dc:creator><![CDATA[Speedy_92]]></dc:creator><pubDate>Tue, 22 Jul 2008 00:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Tue, 22 Jul 2008 00:30:18 GMT]]></title><description><![CDATA[<p>Was sich auch lohnt, wenn du Platz sparen willst:</p>
<pre><code class="language-cpp">#define m int main() {
#define f for(
#define w while(
#define t while(true);
#define i if(
#define v(a) int a;
#define y(a) int a = 0;
#define n(a) (++a)
#define s(a) std::cout &lt;&lt; a &lt;&lt; std::endl;

m
v(x)
f y(z) z&lt;3; n(z))
 i z&lt;2) {s(&quot;x=&quot;&lt;&lt;x)}
t
}
</code></pre>
<p>Noch besser siehts in einer Zeile aus:</p>
<pre><code class="language-cpp">m v(x) f y(z) z&lt;3; n(z)) i z&lt;2) {s(&quot;x=&quot;&lt;&lt;x)} t}
</code></pre>
<p>Viel Spass damit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
(Eigentlich schade, dass man <code>#define</code> nicht auch noch abkürzen kann)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551300</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 22 Jul 2008 00:30:18 GMT</pubDate></item><item><title><![CDATA[Reply to Macros ersetzen nicht alles? on Tue, 22 Jul 2008 03:47:31 GMT]]></title><description><![CDATA[<p>Wieso ist damals IBM nich auf die Idee gekommen DOS Code so verunstalten, dann hätte der Bill den Code nich kopieren können.</p>
<pre><code class="language-cpp">#define for_Each(a,b) for(int i= (a), i&lt; (b), ++i)

for_Each(0,10){

}
</code></pre>
<p>das find ich schön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1551318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1551318</guid><dc:creator><![CDATA[HumanCompiler]]></dc:creator><pubDate>Tue, 22 Jul 2008 03:47:31 GMT</pubDate></item></channel></rss>