2012-05-18 6 views
12

Ein Kollege von mir über einen unserer ererbten Codebasen gesucht und gefunden die folgende Zeile:Was ist dieses String-Literal im booleschen Ausdruck idiom?

ATLASSERT(rtaddress == m_lRTAddress && "Creation settings should match FIFO");

Wir verstehen nicht, was der Zweck der Zeichenfolge für wörtliche ist; ist es für mehr als nur kommentieren? So wie ich es sehe, wenn rtaddress nicht gleich m_lRTAddress ist, dann wird die Zeichenkette niemals wegen Kurzschlüssen ausgewertet. Wenn rtaddress gleich m_lRTAddress ist, dann wird das String-Literal ausgewertet, aber ein String-Literal, das für einen booleschen Ausdruck ausgewertet wird, gibt immer true zurück; also, was ist der Punkt?

+17

Es ist ein Trick, diese Zeichenfolge im Dialogfeld "Assert" angezeigt zu bekommen. Selbstdokumentierende Warnmeldung –

+0

Es ist eine verwerfliche Verschwendung von Raum und ist auch Obskurantismus. Verwenden Sie einen Kommentar. Die Assertion Failure Nachricht wird Sie auf die Quellcodezeile verweisen (zumindest wird es, wenn ein ATLASSERT wie eine Standard-Assert ist). – dave

Antwort

13

Ich denke, es ist so, dass wenn die Assert fehlschlägt, Sie den Grund sehen können, warum die Assert hinzugefügt wurde.

Verwandte Themen