<?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[assert 3 fragen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin neu und habe 3 Fragen:</p>
<ol>
<li>
<p>Sind asserts langsam - also bremsen sie die performance eines programms deutlich? sind diese wie eine if-abfrage?</p>
</li>
<li>
<p>kann man asserts zentral abschalten aus dem code wie z.B. debug-info über präprozessor-direktiven? Wenn ja wie? oder muss man z.B. vor auslieferung eines programms alle asserst löschen?</p>
</li>
<li>
<p>worin liegt der unterschied zwischen asserst und einer gewöhlichen if-abfrage? Nur darin dass eine Meldung ausgegeben wird? Was ist der Sinn von asserts?</p>
</li>
</ol>
<p>danke euch <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/topic/236306/assert-3-fragen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 01:52:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236306.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Mar 2009 10:38:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 10:38:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin neu und habe 3 Fragen:</p>
<ol>
<li>
<p>Sind asserts langsam - also bremsen sie die performance eines programms deutlich? sind diese wie eine if-abfrage?</p>
</li>
<li>
<p>kann man asserts zentral abschalten aus dem code wie z.B. debug-info über präprozessor-direktiven? Wenn ja wie? oder muss man z.B. vor auslieferung eines programms alle asserst löschen?</p>
</li>
<li>
<p>worin liegt der unterschied zwischen asserst und einer gewöhlichen if-abfrage? Nur darin dass eine Meldung ausgegeben wird? Was ist der Sinn von asserts?</p>
</li>
</ol>
<p>danke euch <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/1679205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679205</guid><dc:creator><![CDATA[mousepad]]></dc:creator><pubDate>Fri, 13 Mar 2009 10:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 10:40:59 GMT]]></title><description><![CDATA[<p>mousepad schrieb:</p>
<blockquote>
<ol>
<li>Sind asserts langsam - also bremsen sie die performance eines programms deutlich? sind diese wie eine if-abfrage?</li>
</ol>
</blockquote>
<p>Asserts sind im Release-Modus (wenn NDEBUG gesetzt ist) &quot;garnicht&quot;, werden also komplett aus dem Programm entfernt. Im Debug-Modus sollte man die Performancefrage aussen vor lassen.</p>
<blockquote>
<ol start="2">
<li>kann man asserts zentral abschalten aus dem code wie z.B. debug-info über präprozessor-direktiven? Wenn ja wie? oder muss man z.B. vor auslieferung eines programms alle asserst löschen?</li>
</ol>
</blockquote>
<p>siehe oben</p>
<blockquote>
<ol start="3">
<li>worin liegt der unterschied zwischen asserst und einer gewöhlichen if-abfrage? Nur darin dass eine Meldung ausgegeben wird? Was ist der Sinn von asserts?</li>
</ol>
</blockquote>
<p>a) siehe oben<br />
b) assert macht eine Ausgabe<br />
c) assert beendet das Programm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679207</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 13 Mar 2009 10:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 11:58:04 GMT]]></title><description><![CDATA[<p>danke erstmal für die antwort.<br />
Aber wie soll ich das verstehen - sie sind &quot;gar nicht&quot;. Muss ich dazu dann jedes assert per hand rauslöschen wenn ich einen release plane? Da kann ich doch gleich eine präprozessor-direktive mit einer if-abfrage machen oder nicht?</p>
<p>Für weitere aufklärung wäre ich dankbar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679258</guid><dc:creator><![CDATA[mousepad]]></dc:creator><pubDate>Fri, 13 Mar 2009 11:58:04 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 12:12:51 GMT]]></title><description><![CDATA[<p>Ich wollte damit sagen, dass asserts im Release-Modus nicht mehr vorhanden sind. Ich habe nicht gesagt, dass Du sie dafür manuell löschen musst.</p>
<p>Im Grunde sieht assert so aus:</p>
<pre><code class="language-cpp">#if !defined(NDEBUG)
#   define assert(x) __builtin_assert(x)
#else
#   define assert(x)
#endif
</code></pre>
<p>Der Teil im if-Zweig, also wie assert implementiert ist, ist dabei uninteressant, wichtig ist, dass im else-Zweig (also wenn NDEBUG gesetzt ist) assert(...) durch nichts ersetzt (sprich: entfernt) wird, und damit auch keinen Code erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679267</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 13 Mar 2009 12:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 12:58:32 GMT]]></title><description><![CDATA[<p>danke - muss dieser 5-zeiler dann in jeder datei stehen bzw. überall erreichbar sein?<br />
Was passiert wenn ich diesen 5-zeiler nicht eintrage und einfach assert(...) schreibe an den stellen?</p>
<p>verstehe ich das richtig dass ich zuerst den 5-zeiler definieren muss.<br />
Dann einfach an irgendeine stelle im code assert(x &gt; 5) z.B. ohne präprozessor-flags und dann im release mode einfach drüberkompilieren - sind die asserts dann draußen? Ist NDEBUG eigens definiert oder vom compiler als flag bekannt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679308</guid><dc:creator><![CDATA[mousepad]]></dc:creator><pubDate>Fri, 13 Mar 2009 12:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 13:00:24 GMT]]></title><description><![CDATA[<p>mousepad schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ja, das musst Du überall reinschreiben. Außerdem noch</p>
<pre><code>#ifdef TROLL_VERSUCH
  assert(&quot;Gescheitert.&quot;)
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1679310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679310</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 13 Mar 2009 13:00:24 GMT</pubDate></item><item><title><![CDATA[Reply to assert 3 fragen on Fri, 13 Mar 2009 13:01:08 GMT]]></title><description><![CDATA[<p>mousepad schrieb:</p>
<blockquote>
<p>danke - muss dieser 5-zeiler dann in jeder datei stehen bzw. überall erreichbar sein?</p>
</blockquote>
<p>Lies einfach die Doku zu assert.<br />
Ist ja furchtbar was du hier aufführst...</p>
<p>assert ist im Release Modus nicht mehr vorhanden, im Debug Modus schon.<br />
Da es ein Teil der Standard Library, wie zB auch std::cout ist, musst du (wie bei std::cout) die Implementierung (oh wunder) nicht selber vornehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679312</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 13 Mar 2009 13:01:08 GMT</pubDate></item></channel></rss>