Ich habe gegraben nur einen Fehler in einigen Code bis wir mit * arbeiten, die aufgrund der folgenden Situation versagte:Funktionsaufruf innerhalb der Assert == schlecht?
Assert(SomeVitalFunction(foo) == OK)
Diese Zeit alle DEBUG Makros funktionierte gut #defined wurden:
#ifdef DEBUG
#define Assert(x) if((x) == 0){/*some error handling*/}
#else
#define Assert(x)
#endif
Aber wenn wir #undef'd DEBUG
es hat die Wirkung der Vitalfunktion Anruf aus dem Code zu löschen.
Ich kann nicht für das Leben von mir erarbeiten, wie das jemals mit DEBUG #undef
'd funktionieren könnte, und es scheint eine schlechte Idee im Allgemeinen jede Art von Funktionsaufruf innerhalb einer Assert wie folgt zu setzen.
Habe ich etwas verpasst?
* = bearbeiten folgende Carpetsmoker Kommentar zu klären: Der Code stammt aus einem besonders rückwärts Kabale Elbonian Code Sklaven hat unsere Aufgabe zu hacken gewesen, hieb, rasiert, Politur, sanieren und Lippenstift auf die Sache an.
Der Sinn von 'assert' ist es" * Programmierern zu helfen, Fehler in ihren Programmen zu finden * "... Also sollten alle Anwendungen idealerweise entfernbar sein, und alles sollte immer noch gleich funktionieren. Sie haben also Recht bei Ihrer Beobachtung, und Sie oder einer Ihrer Mitarbeiter haben in der Vergangenheit einen Fehler gemacht. – Carpetsmoker
Ich habe vor langer Zeit ein Visual Studio-Makro geschrieben, um durch die Codebasis zu schauen (damals suchte ich nach ASSERT (... (...) '- also 2 oder mehr öffnende Klammern vor dem schließenden), weil es so ist so ein großes Problem, wenn es passiert. – AAT