<?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[Code zur Compilezeit]]></title><description><![CDATA[<p>Hallo,<br />
für mein Programm müssen mehrere POD-Instanzen (mit demselben Typ) genutzt werden. Zum Beispiel &quot;Bauklotz&quot;, der eine Farbe und eine Form enthält.<br />
Diese sollen zur Compilierung festgelegt und somit nicht vom späteren Nutzer geändert werden können.<br />
Eine Möglichkeit wäre:</p>
<pre><code class="language-cpp">struct Bauklotz
{
	unsigned char color_red;
	unsigned char color_green;
	unsigned char color_blue;
	enum {DICE, BALL, PYRAMID} shape;
};

const Bauklotz kloetze[] = {
	{10, 20, 30, Bauklotz::BALL},
	{255, 0, 0, Bauklotz::BALL},
	{0, 155, 155, Bauklotz::PYRAMID}
};
</code></pre>
<p>Das ist aber unübersichtlich und nervig zu tippen.</p>
<p>Daher habe ich an die Alternative gedacht, txt-Dateien in einem Ordner zu verwalten, die diese Informationen enthalten.</p>
<pre><code>// 1.txt
10 20 30
BALL

// 2.txt
RED
BALL

// 3.txt
0 155 155
PYRAMID
</code></pre>
<p>Das Problem ist aber, dass, wenn ich die Daten aus diesen Dateien lese, sie einfach vom Nutzer geändert werden können.</p>
<p>Von daher: Gibt es eine Möglichkeit, dass bestimmter Code schon zur Compilezeit ausgeführt wird? Damit könnte ich die Daten dann in eine konstante Variable laden. Oder gibt es andere Wege, mein Vorhaben gut umzusetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293647/code-zur-compilezeit</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 05:44:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293647.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Oct 2011 00:25:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 00:25:27 GMT]]></title><description><![CDATA[<p>Hallo,<br />
für mein Programm müssen mehrere POD-Instanzen (mit demselben Typ) genutzt werden. Zum Beispiel &quot;Bauklotz&quot;, der eine Farbe und eine Form enthält.<br />
Diese sollen zur Compilierung festgelegt und somit nicht vom späteren Nutzer geändert werden können.<br />
Eine Möglichkeit wäre:</p>
<pre><code class="language-cpp">struct Bauklotz
{
	unsigned char color_red;
	unsigned char color_green;
	unsigned char color_blue;
	enum {DICE, BALL, PYRAMID} shape;
};

const Bauklotz kloetze[] = {
	{10, 20, 30, Bauklotz::BALL},
	{255, 0, 0, Bauklotz::BALL},
	{0, 155, 155, Bauklotz::PYRAMID}
};
</code></pre>
<p>Das ist aber unübersichtlich und nervig zu tippen.</p>
<p>Daher habe ich an die Alternative gedacht, txt-Dateien in einem Ordner zu verwalten, die diese Informationen enthalten.</p>
<pre><code>// 1.txt
10 20 30
BALL

// 2.txt
RED
BALL

// 3.txt
0 155 155
PYRAMID
</code></pre>
<p>Das Problem ist aber, dass, wenn ich die Daten aus diesen Dateien lese, sie einfach vom Nutzer geändert werden können.</p>
<p>Von daher: Gibt es eine Möglichkeit, dass bestimmter Code schon zur Compilezeit ausgeführt wird? Damit könnte ich die Daten dann in eine konstante Variable laden. Oder gibt es andere Wege, mein Vorhaben gut umzusetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128618</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 08 Oct 2011 00:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 00:30:24 GMT]]></title><description><![CDATA[<p>Egal wie du es anstellst, um das Tippen wirst du nicht herumkommen - und die Variante mit den Hilfsdateien dürfte um einiges aufwendiger sein als das Array von Hand anzulegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128619</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 08 Oct 2011 00:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 00:30:51 GMT]]></title><description><![CDATA[<p>baukloetzchen_incl.hpp:</p>
<pre><code class="language-cpp">const Bauklotz[] kloetze = {
#include &quot;kloetzchen.txt&quot;
};
</code></pre>
<p>kloetzchen.txt:</p>
<pre><code class="language-cpp">{ 10, 20, 30, Bauklotz::BALL },
{255, 0, 0, Bauklotz::BALL},
{0, 155, 155, Bauklotz::PYRAMID}
</code></pre>
<p>Verwendung:</p>
<pre><code class="language-cpp">#include &quot;baukloetzchen_incl.hpp&quot;

void kill_everything()
{
    kloetze[42].explode();
    play_sound(&quot;boom.wav&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2128621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128621</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 08 Oct 2011 00:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 00:32:04 GMT]]></title><description><![CDATA[<p>Du könntest in deinem Makefile die Definitionen aus den Textdateien durch ein Script, z.B. in Perl, generieren lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128622</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 08 Oct 2011 00:32:04 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 09:54:43 GMT]]></title><description><![CDATA[<p>@ CStoll: Wieso dürfte die aufwändiger sein? Entweder es gibt die Möglichkeit, die Dateien zur Compilezeit zu lesen oder es gibt sie nicht.?</p>
<p>@ 314159265358979: Das macht die Sache aber nicht viel übersichtlicher. Kann man eine Datei per include nicht als String speichern?<br />
Außerdem sollten automatisch alle Dateien in einem Ordner geladen werden und nicht eine Menge, die in einer anderen Datei definiert ist.</p>
<p>@ Bashar: Da ich keine Ahnung von Makefiles und von Ruby in C++ habe, fällt das (erstmal) für weg <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/2128787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128787</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 08 Oct 2011 09:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 10:14:42 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>@ CStoll: Wieso dürfte die aufwändiger sein? Entweder es gibt die Möglichkeit, die Dateien zur Compilezeit zu lesen oder es gibt sie nicht.?</p>
</blockquote>
<p>Ich hätte da eine Idee (Stichwort: Resourcen), aber bei der müsstest du noch Hilfscode schreiben, um daraus dein Array zu erzeugen. Wobei die meisten Lösungen wohl auf Abwandlungen von Pi's Präprozessor-Variante hinauslaufen dürften.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128798</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 08 Oct 2011 10:14:42 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 11:41:10 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>@ Bashar: Da ich keine Ahnung von Makefiles und von Ruby in C++ habe, fällt das (erstmal) für weg <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>Du kannst das &quot;Script&quot; auch in C++ schreiben, wenn du willst. Wird halt ein bisschen anstrengender, aber du wolltest die Textdatei ja ursprünglich sowieso mit C++-Code &quot;zur Compilezeit&quot; parsen.<br />
Und wenn du kein Make verwendest, verwendest du bestimmt irgendein anderes Build-Tool oder eine IDE. Beim Visual Studio kann man z.b. &quot;Custom Build Steps&quot; einfügen.</p>
<p>(Wie kommst du eigentlich darauf, dass der Benutzer das nicht ändern kann, wenn es im Programm eincompiliert ist?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128846</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Sat, 08 Oct 2011 11:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 13:05:01 GMT]]></title><description><![CDATA[<p>Du könntest dir ja einen Prä-Präprozessor basteln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128893</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 08 Oct 2011 13:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 15:13:44 GMT]]></title><description><![CDATA[<p>@ CStoll: Meinst du, die txt-Dateien als Resource in die Executable zu packen?</p>
<p>@ Bashar:</p>
<blockquote>
<p>Du kannst das &quot;Script&quot; auch in C++ schreiben, wenn du willst. Wird halt ein bisschen anstrengender, aber du wolltest die Textdatei ja ursprünglich sowieso mit C++-Code &quot;zur Compilezeit&quot; parsen.</p>
</blockquote>
<p>Und wie würde das aussehen?</p>
<blockquote>
<p>Und wenn du kein Make verwendest, verwendest du bestimmt irgendein anderes Build-Tool oder eine IDE. Beim Visual Studio kann man z.b. &quot;Custom Build Steps&quot; einfügen.</p>
</blockquote>
<p>Visual Studio nutze ich. Die &quot;Custom Build Steps&quot; sehe ich mir mal an.</p>
<blockquote>
<p>(Wie kommst du eigentlich darauf, dass der Benutzer das nicht ändern kann, wenn es im Programm eincompiliert ist?)</p>
</blockquote>
<p>Weil die Nutzer sich in ihrer Freizeit nicht mit Disassemblierung beschäftigen.</p>
<p>@ 314159265358979: Was meinst du damit? Kannst du mir ein kleines Beispiel zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128954</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 08 Oct 2011 15:13:44 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 15:24:01 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>@ 314159265358979: Was meinst du damit? Kannst du mir ein kleines Beispiel zeigen?</p>
</blockquote>
<p>Du sollst dir ein Programm schreiben, welches dir dein Programm schreibt. Das klingt kompliziert, sollte aber recht einfach sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2128957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2128957</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 08 Oct 2011 15:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to Code zur Compilezeit on Sat, 08 Oct 2011 17:49:25 GMT]]></title><description><![CDATA[<p>Wenn es so einfach ist, kann mir doch jemand ein Beispiel zeigen? <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 />
Ich weiß nämlich nicht, wie das auszusehen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2129016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2129016</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 08 Oct 2011 17:49:25 GMT</pubDate></item></channel></rss>