Gibt es einen Mechanismus in D (D2), um zu erzwingen, dass Code während eines Releasebuilds kompiliert wird?Kompiliercode für die Versionserstellung in D
In C, könnten Sie so etwas wie
#ifndef NDEBUG
/*Something that will only run in a debug build*/
#endif
ich weiß haben, dass D
debug(mymodule) {
//Do something
}
hat aber dies muss der Benutzer für jedes Modul passieren -debug es zu aktivieren.
Ich bin auf der Suche nach einem globalen Mechanismus, der immer den Code in einem normalen Build ausführen wird, aber kompilieren Sie es aus, wenn Sie das Release-Flag übergeben. Ich weiß, dass einige Built-Ins diese Fähigkeit haben (z. B. Assert), aber gibt es auch eine Möglichkeit für Benutzercode, dies zu tun?
Ich denke, dass ein Teil des Problems ist, dass 'debug' und' -release' in D. hat nichts miteinander zu tun '-release' bedeutet, dass Sie ein kompilieren Release-Version und es deaktiviert verschiedene Prüfungen (z. B. Assertions). '-debug' aktiviert die Debug-Anweisungen. Daher könnten Sie argumentieren, dass es in D nicht wirklich einen "Debug-Modus" gibt. Sie haben den Release-Modus und den Nicht-Release-Modus mit der Fähigkeit, Debug-Anweisungen in beiden Modi zu aktivieren. Ich glaube nicht, dass '-release' die Semantik Ihres Codes wirklich ändern sollte, wie' -debug' ist, weshalb Sie wahrscheinlich nicht tun können, was Sie versuchen zu tun. –
Ich möchte die Semantik für den Release-Build nicht ändern. Ich bin nur auf der Suche nach dem besten Weg, zusätzliche Überprüfungen, Drucke, etc. in einem Nicht-Release-Build hinzuzufügen, der während der Entwicklung immer eingeschaltet ist. Ich sehe es als etwas, um einem Entwickler zu helfen, Probleme schneller aufzuspüren. Die zusätzlichen Prüfungen und Warnungen können ihnen einen Hinweis geben, welche Module sie aktivieren sollten. – JRM
Ich gab eine Antwort, aber irgendwie fühle ich mich schlecht dabei. Ich würde empfehlen, nur -debug zu verwenden, wenn Sie devvieren und 'debug {// ...}'. Es ist besser, es leichter zu machen, Fehler zu machen, wenn man entschlüsselt, als wenn man es loslässt, imho. – 0scar