<?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[Bibliothek für Kontrollausgabe]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein größeres Programm (15000 Zeilen) geschrieben und möchte nun ein komfortable Kontrollausgabe einbauen. Bisher sieht das bei mir typischerweise wie folgt aus:</p>
<pre><code class="language-cpp">Tree::Tree(const Tree&amp; tr) : Base_Tree&lt;Node, Node_Container&gt;(tr.num_sites(), tr.num_mutation_rates())
{
	const bool OUTPUT_DEBUG = 1;    // Kontrollausgabe machen?
	ofstream* out_strm = in_out_streams::ostrm(OUTPUT_FILE);    // Outstream für Kontrollausgabe holen
	if (OUTPUT_DEBUG)
		in_out_streams::header_begin(out_strm, &quot;Tree(const Tree&amp; tr)&quot;);    // Als erstes Text ausgeben, der besagt, dass hier die Funktion beginnt

	...    // (Code)

		if (OUTPUT_DEBUG)    // irgendeine Kontrollausgabe
		{
			*out_strm &lt;&lt; &quot;total_intensity: &quot; &lt;&lt; total_intensity &lt;&lt; endl;
			*out_strm &lt;&lt; &quot;recomb_intensity: &quot; &lt;&lt; recomb_intensity &lt;&lt; endl &lt;&lt; endl;
		}
	...    // (Code)

	if (OUTPUT_DEBUG)
		in_out_streams::header_end(out_strm, &quot;Tree(const Tree&amp; tr)&quot;);    // Als letztes Text ausgeben, der besagt, dass hier die Funktion endet
}
</code></pre>
<p>Aus folgenden Gründen gefällt mir das nicht:<br />
- Das An- und Ausschalten der Ausgabe ist unkomfortabel. Die obige Funktion z.B. ist Teil der Datei &quot;sim_tree.cpp&quot; im Ordner &quot;tree&quot;. Ich würde gerne alle Ausgaben in der Datei &quot;sim_tree.cpp&quot; bzw. im Ordner &quot;tree&quot; bzw. im ganzen Programm an- und ausschalten können.<br />
- Die Ausgabe vom Header (in_out_streams::header_begin(...)) und seinem Gegenstück (wie nennt man das eigentlich: base, bottom, foot?) sollte stärker automatisiert sein, d.h.<br />
* ich sollte nicht gezwungen sein, den Funktionsnamen einzugeben<br />
* man sollte noch anderen Angaben bekommen (Dateiname, Zeilennummer)</p>
<p>Weiss jemand, ob es dazu schon was gibt (in Boost war ich nicht fündig) oder, falls nicht, wie man es per Hand am besten macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219825/bibliothek-für-kontrollausgabe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 01:19:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219825.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Aug 2008 06:01:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Fri, 08 Aug 2008 06:01:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein größeres Programm (15000 Zeilen) geschrieben und möchte nun ein komfortable Kontrollausgabe einbauen. Bisher sieht das bei mir typischerweise wie folgt aus:</p>
<pre><code class="language-cpp">Tree::Tree(const Tree&amp; tr) : Base_Tree&lt;Node, Node_Container&gt;(tr.num_sites(), tr.num_mutation_rates())
{
	const bool OUTPUT_DEBUG = 1;    // Kontrollausgabe machen?
	ofstream* out_strm = in_out_streams::ostrm(OUTPUT_FILE);    // Outstream für Kontrollausgabe holen
	if (OUTPUT_DEBUG)
		in_out_streams::header_begin(out_strm, &quot;Tree(const Tree&amp; tr)&quot;);    // Als erstes Text ausgeben, der besagt, dass hier die Funktion beginnt

	...    // (Code)

		if (OUTPUT_DEBUG)    // irgendeine Kontrollausgabe
		{
			*out_strm &lt;&lt; &quot;total_intensity: &quot; &lt;&lt; total_intensity &lt;&lt; endl;
			*out_strm &lt;&lt; &quot;recomb_intensity: &quot; &lt;&lt; recomb_intensity &lt;&lt; endl &lt;&lt; endl;
		}
	...    // (Code)

	if (OUTPUT_DEBUG)
		in_out_streams::header_end(out_strm, &quot;Tree(const Tree&amp; tr)&quot;);    // Als letztes Text ausgeben, der besagt, dass hier die Funktion endet
}
</code></pre>
<p>Aus folgenden Gründen gefällt mir das nicht:<br />
- Das An- und Ausschalten der Ausgabe ist unkomfortabel. Die obige Funktion z.B. ist Teil der Datei &quot;sim_tree.cpp&quot; im Ordner &quot;tree&quot;. Ich würde gerne alle Ausgaben in der Datei &quot;sim_tree.cpp&quot; bzw. im Ordner &quot;tree&quot; bzw. im ganzen Programm an- und ausschalten können.<br />
- Die Ausgabe vom Header (in_out_streams::header_begin(...)) und seinem Gegenstück (wie nennt man das eigentlich: base, bottom, foot?) sollte stärker automatisiert sein, d.h.<br />
* ich sollte nicht gezwungen sein, den Funktionsnamen einzugeben<br />
* man sollte noch anderen Angaben bekommen (Dateiname, Zeilennummer)</p>
<p>Weiss jemand, ob es dazu schon was gibt (in Boost war ich nicht fündig) oder, falls nicht, wie man es per Hand am besten macht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561220</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Fri, 08 Aug 2008 06:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Sun, 10 Aug 2008 13:40:04 GMT]]></title><description><![CDATA[<p>Kontrollausgaben programmiert man selbst:<br />
...<br />
ofstream test;<br />
int iAnyInteger=2;<br />
float fAnyFloat=2.5;<br />
char cAnyString[]=&quot;hallo&quot;;<br />
...<br />
test.open(&quot;test.tst&quot;);<br />
...<br />
test &lt;&lt; &quot;--&gt; &quot; &lt;&lt; iAnyInteger &lt;&lt; &quot; &quot; &lt;&lt; fAnyFloat &lt;&lt; &quot; &quot; &lt;&lt; cAnyString &lt;&lt; endl;<br />
...<br />
...<br />
test.close();</p>
<p>Ich verwende diese Methode seit den Zeiten, als es noch keine Debugger gab</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562237</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Sun, 10 Aug 2008 13:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Sun, 10 Aug 2008 14:15:17 GMT]]></title><description><![CDATA[<p>wieso nich so in etwa?</p>
<pre><code class="language-cpp">#ifndef _DEBUG
	#define DEBUG_OUTPUT (X) std::cout &lt;&lt; X &lt;&lt; std::endl
#else
	#define DEBUG_OUTPUT (X) 0
#endif
</code></pre>
<pre><code class="language-cpp">for (size_t i (0); i != max; ++i)
{
//...
DEBUG_OUTPUT (i &lt;&lt; &quot; / &quot; &lt;&lt; max);
}
</code></pre>
<p>sollte ganz gut funzen denk ich...<br />
bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562249</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 10 Aug 2008 14:15:17 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Sun, 10 Aug 2008 14:32:22 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#ifndef _DEBUG
	#define DEBUG_OUTPUT (X) std::cout &lt;&lt; X &lt;&lt; std::endl
#else
	#define DEBUG_OUTPUT (X) 0
#endif
</code></pre>
</blockquote>
<p>Bei der ersten Präprozessordirektive sollte es wohl <code>#ifdef</code> heissen. Und statt <code>0</code> würde ich eher <code>;</code> oder <code>{}</code> 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/1562256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562256</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Aug 2008 14:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Sun, 10 Aug 2008 16:01:53 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Und statt <code>0</code> würde ich eher <code>;</code> oder <code>{}</code> 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>
</blockquote>
<p>((void)0)</p>
<p>oder eine inline funktion</p>
<pre><code class="language-cpp">inline void noop(){}
</code></pre>
<p>verwenden die nichts macht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562297</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 10 Aug 2008 16:01:53 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Sun, 10 Aug 2008 17:57:40 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Bei der ersten Präprozessordirektive sollte es wohl <code>#ifdef</code> heissen.</p>
</blockquote>
<p>Joar - sry ^^</p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>((void)0)</p>
</blockquote>
<p>Joar - so wärs richtiger... Aber in dem Fall ists find ich ziemlich egal...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562337</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 10 Aug 2008 17:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Mon, 11 Aug 2008 21:08:01 GMT]]></title><description><![CDATA[<p>Bei der vorgeschlagenen Lösung, scheint es mir ein Problem, dass man mittels _DEBUG alle Kontrollausgabe an- oder ausschalten kann. Wenn ich in meinem Programm aber alle Kontrollausgaben (15000 Zeilen Code und wachsend) anschalte, wird das ziemlich unübersichtlich. Am liebsten wäre mir eine baumartige Struktur:</p>
<pre><code>- tree: an/aus
    - sim_tree: an/aus
        - Tree::Tree(const Tree&amp; tr): an/aus
        - Tree::Tree(): an/aus
        - Tree::prob(): an/aus
        ...
    - tree_rearranger: an/aus
        ...
    - subst_prob: an/aus
        ...
    ...
- node: an/aus
    ...
</code></pre>
<p>Hier seien &quot;tree&quot; und &quot;node&quot; Ordner, &quot;sim_tree&quot;, &quot;tree_rearranger&quot; und &quot;subst_prob&quot; Source-Dateien und &quot;Tree::Tree(const Tree&amp; tr)&quot;, &quot;Tree::Tree()&quot; und &quot;Tree::prob()&quot; Methoden. Mittels &quot;an&quot; und &quot;aus&quot; kann entschieden werden, ob alle Kontrollausgaben in Ordner/Datei/Methode angeschaltet werden (so ähnlich wie das manchmal beim Auswählen von Dateien auch ist).</p>
<p>Ich hoffe, ich bin nicht der Erste, der sowas haben will (wäre dann wohl auch ein Zeichen dafür, dass das nicht sinnvoll ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562953</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 11 Aug 2008 21:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 12 Aug 2008 00:06:50 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Und statt <code>0</code> würde ich eher <code>;</code> oder <code>{}</code> 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>
</blockquote>
<p>((void)0)<br />
oder eine inline funktion [...] verwenden die nichts macht...</p>
</blockquote>
<p>Das versteh ich jetzt nicht... Wieso eine Null oder eine Inline-Funktion, aber keine Leeranweisung bzw. ein leerer Block?</p>
<p><strong>@ ingobulla:</strong><br />
Du könntest eigene Makros definieren und dann in den erwünschten Codeteilen spezifisch abfragen, ob nun eine Debug-Ausgabe stattfinden soll oder nicht. Für hierarchische Abfragen schachtelst du eben mehrere <code>#ifdef</code> s.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562982</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Aug 2008 00:06:50 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 12 Aug 2008 05:19:52 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Das versteh ich jetzt nicht... Wieso eine Null oder eine Inline-Funktion, aber keine Leeranweisung bzw. ein leerer Block?</p>
</blockquote>
<p>Was wenn jemand ein if verwendet:</p>
<p>if(foo) DEBUG_OUT(&quot;blabla&quot;);</p>
<p>was passiert, wenn du jetzt aus DEBUG_OUT ein {} machst?<br />
nichts wildes, aber stell dir mal folgendes vor:</p>
<p>if(foo) DEBUG_OUT(&quot;bla bla&quot;);<br />
else DEBUG_OUT(&quot;blu blu&quot;);</p>
<p>plötzlich haben wir einen syntax fehler, weil<br />
if(foo) {} ; else {} ;<br />
nicht korrekt ist...</p>
<p>weiters sollten solche makros auch immer nur void liefern, damit nie nie nie jemand auf so eine idee kommt:</p>
<p>int i = DEBUG_OUT(&quot;blup&quot;);</p>
<p>deshalb immer nach void casten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562997</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Aug 2008 05:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 12 Aug 2008 05:43:20 GMT]]></title><description><![CDATA[<p>Fuer sowas nimmt man Logging-Bibliotheken, die die Logger hierarchisch ordnen koennen:</p>
<p><a href="http://logging.apache.org/log4cxx/index.html" rel="nofollow">http://logging.apache.org/log4cxx/index.html</a><br />
<a href="http://log4cpp.sourceforge.net/" rel="nofollow">http://log4cpp.sourceforge.net/</a><br />
<a href="http://log4cplus.sourceforge.net/" rel="nofollow">http://log4cplus.sourceforge.net/</a><br />
<a href="http://pantheios.sourceforge.net/" rel="nofollow">http://pantheios.sourceforge.net/</a> (keine Hierarchie)</p>
<p>(mit &quot;logging C++&quot; waren die uebrigens alle auf der 1. Trefferseite bei Google... )</p>
<p>An Filenamen &amp; Zeilennummer rankommen ist auch relativ einfach, dafuer gibts vom Compiler definierte Macros, vllt. auch fuer den Funktionsnamen (die Macros muesstet aber selbst im Handbuch nachschlagen, hab k.A. mehr). <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/1563004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563004</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Tue, 12 Aug 2008 05:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 12 Aug 2008 05:51:30 GMT]]></title><description><![CDATA[<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>An Filenamen &amp; Zeilennummer rankommen ist auch relativ einfach, dafuer gibts vom Compiler definierte Macros, vllt. auch fuer den Funktionsnamen (die Macros muesstet aber selbst im Handbuch nachschlagen, hab k.A. mehr). <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>__LINE__<br />
__FILE__<br />
BOOST_CURRENT_FUNCTION</p>
<p><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/1563012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563012</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Aug 2008 05:51:30 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 12 Aug 2008 11:22:19 GMT]]></title><description><![CDATA[<p><strong>@ Shade Of Mine:</strong><br />
Vielen Dank für die Erläuterung, diese Problematik war mir bis jetzt nicht bewusst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563254</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Aug 2008 11:22:19 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Mon, 18 Aug 2008 13:27:16 GMT]]></title><description><![CDATA[<p>Wer braucht so komplizierte Dinge. Man muss sein Programm-Design nur übersichtlich halten. Dann helfen jeder Debugger oder eigene Kontrollausgaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1566942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566942</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Mon, 18 Aug 2008 13:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Mon, 18 Aug 2008 13:29:23 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Wer braucht so komplizierte Dinge. Man muss sein Programm-Design nur übersichtlich halten. Dann helfen jeder Debugger oder eigene Kontrollausgaben.</p>
</blockquote>
<p>Was ja auch wunderschön fuinktioniert wenn man der einzige ist der daran arbeitet und die Größe unter der Tausend Klassen-Grenze bleibt. <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/1566946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1566946</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 18 Aug 2008 13:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 19 Aug 2008 10:34:50 GMT]]></title><description><![CDATA[<p>@ Fellhuhn<br />
Gerade wenn mehrere Leute an einem Projekt arbeiten, kommt es auf ein sauberes Design und eben auf einen Kontroll-Mechanismus an. Irgendwo ist Mist und niemand merkt es. Die Fehlersuche war schon immer der grösste Aufwand der Programmierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567452</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Tue, 19 Aug 2008 10:34:50 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 19 Aug 2008 10:38:55 GMT]]></title><description><![CDATA[<p>Wenn alles Knorke wäre im Code würde man aber auch nicht so schön saftige Supportverträge abschließen und sich daran dumm und dämlich verdienen. <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>Ne, leider wird es selten was mit komplett durchgezogenen Designmustern etc. weil einigen einfach die Erfahrung fehlt, niemand die Zeit (und so das Geld) hat diese einzulernen. Ebenso müssen Änderungen schnell erfolgen und jahrzehnte alter Code integriert werden und das ganze noch mit alten Compilern laufen. Nicht immer funzt das. <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/1567455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567455</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 19 Aug 2008 10:38:55 GMT</pubDate></item><item><title><![CDATA[Reply to Bibliothek für Kontrollausgabe on Tue, 19 Aug 2008 10:57:16 GMT]]></title><description><![CDATA[<p>@ Fragesteller<br />
Du siehst, das Ziel ist nicht einfach.<br />
@ Fellhuhn<br />
Programmieren war noch nie einfach. Wer keine Ahnung oder nur ungenügende Erfahrung damit hat, sollte es sein lassen - oder einen anderen Job suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1567465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1567465</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Tue, 19 Aug 2008 10:57:16 GMT</pubDate></item></channel></rss>