{"id":461,"date":"2009-06-07T12:08:04","date_gmt":"2009-06-07T10:08:04","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=461"},"modified":"2009-06-03T12:27:46","modified_gmt":"2009-06-03T10:27:46","slug":"wie-man-einen-permanenten-assert-direkt-mit-einem-kommentar-versieht","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2009\/06\/07\/wie-man-einen-permanenten-assert-direkt-mit-einem-kommentar-versieht\/","title":{"rendered":"Tipps &#038; Tricks: Wie man einen permanenten ASSERT direkt mit einem Kommentar versieht"},"content":{"rendered":"<p>Ich verwende gerne ASSERT&#8217;s in meinem Code.<br \/>\nSie sind ein wirksames Mittel Zust\u00e4nde abzufragen und bereist in der Testphase unzul\u00e4ssige Konstellationen oder Funktionsaufrufe zu entdecken.<\/p>\n<p>Nun gibt es ja auch <em>if<\/em>, <em>else\u00a0<em><\/em><\/em>oder <em><em>switch\u00a0<\/em><\/em>Bl\u00f6cke an denen das Programm normalerweise nicht vorbei kommen sollte. So eine Stelle versieht man dann schon mal mit einem<\/p>\n<pre lang=\"cpp\">_ASSERT( FALSE );\r\n\/\/ oder wer die MFC benutzt eben ASSERT,\r\n\/\/ obwohl dies auch nur ein Synonym f\u00fcr den CRT _ASSERT makro ist\r\nASSERT(FALSE);<\/pre>\n<p>Jetzt m\u00fcsste man noch einen Kommentar davor setzen, damit klar wird was hier schief l\u00e4uft. Man kann das Ganze aber auch einfach kombinieren und noch einen Zusatznutzen erreichen indem man den etwas unbekannteren Makro <em>_ASSERTE <\/em>verwendet:<\/p>\n<pre lang=\"cpp\">_ASSERTE( !\"MyFuncFooHandler: This is not allowed in my special Foo Handler\" );<\/pre>\n<p>Die Negation macht aus dem Zeiger auf den konstanten String <em>FALSE<\/em>, und damit schl\u00e4gt der <em>ASSERT <\/em>an.<br \/>\nWenn man jetzt wie hier gezeigt noch den _<em>ASSERTE <\/em>Makro verwendet, dann wird diese Expression, also der Text, sofort mit anzeigt. Man sieht dann sofort was das Problem ist sobald der <em>ASSERT <\/em>Dialog angezeigt wird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich verwende gerne ASSERT&#8217;s in meinem Code. Sie sind ein wirksames Mittel Zust\u00e4nde abzufragen und bereist in der Testphase unzul\u00e4ssige Konstellationen oder Funktionsaufrufe zu entdecken. Nun gibt es ja auch if, else\u00a0oder switch\u00a0Bl\u00f6cke an denen das Programm normalerweise nicht vorbei kommen sollte. So eine Stelle versieht man dann schon mal mit einem _ASSERT( FALSE ); &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2009\/06\/07\/wie-man-einen-permanenten-assert-direkt-mit-einem-kommentar-versieht\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTipps &#038; Tricks: Wie man einen permanenten ASSERT direkt mit einem Kommentar versieht\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,19,11,4,3],"tags":[360,38,352,136,42],"class_list":["post-461","post","type-post","status-publish","format-standard","hentry","category-c","category-crt","category-debugging","category-mfc","category-programmieren","tag-crt","tag-debuggen","tag-mfc","tag-qualitaetssicherung","tag-tippstricks"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=461"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/461\/revisions"}],"predecessor-version":[{"id":470,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/461\/revisions\/470"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=461"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}