Ich verwende eine Debug-Ausgabe mit printf()
in meinen Funktionen, aber die Ausgabe geht an die Konsole beginnend mit den ersten Spalten . Ich möchte die Verschachtelungsebene von Funktionen unterscheiden, indem ich ihre Ausgabezeichenketten jedes Mal einzugreife, wenn ich in die Funktion eintauche (es ist leicht implementiert mit einer static int indentlevel;
Variable, die am Anfang einer Funktion inkrementiert wird und als Raumfüllerzählung verwendet wird) und am Ende dekrementiert). Der Fehler besteht jedoch darin, dass, sobald die Ausgabezeile zu lang wird, um sie an der Konsolenkante zu umhüllen, die umschlossenen Teile der Zeilen in Spalte 1 der Konsole beginnen. Sollte ich mich darum kümmern, da, sobald die Ausgabe in eine Datei umgeleitet wird, die Zeilen etwa eine Zeilenlänge haben und die Breiten der Zeilen nur von den Einstellungen der Textdateibetrachter abhängen?Einrückung (und Umbruch-Einrückung) von Debug-Strings ausgegeben von printf()/fprintf() in C-Programm
Antwort
Da Sie in eine Textdatei schreiben, sollten Sie nicht von Zeilenumbruch kümmern und lassen Sie den Text-Viewer entscheiden.
Ein Ansatz, den ich verwendet habe, ist in HTML zu schreiben - dann kümmert sich der Browser um Zeilenumbruch. Das einzige Problem ist, dass Sie darauf achten müssen, dass die open/end-Tags richtig ausbalanciert sind, aber Sie brauchen das auch für Ihre indentlevel
Variable.
Wenn Sie gcc verwenden Sie die -finstrument-Funktionen Compiler-Option verwenden, können eine Instrumentierung Funktion verursachen am Eingang und am Ausgang jeder Funktion aufgerufen werden.
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
Sie können diese Funktionen definieren, um die Verschachtelungsebene zu verfolgen.
WARNUNG: Ich habe nicht wirklich versucht (noch einen weiteren diese Dinge habe ich nicht ganz herumgesprochen zu!). Ein offensichtlicher GOTHCA - instrumentieren Sie nicht die Instrumentierungsfunktionen !!!
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Code-Gen-Options.html
- 1. Einrückung von Schrägstrichen von Zeilenkommentaren
- 2. Einrückung von mehrzeiligen Zeichenfolge
- 3. JavaScript Äquivalent von C Einrückung
- 4. Fehler: inkonsistente Verwendung von Tabs und Leerzeichen in Einrückung
- 5. Tool zum Konvertieren von Python-Einrückung von Leerzeichen in Tabs?
- 6. Wie erzwinge Einrückung von C# bedingten Anweisungen?
- 7. js-beautify Einrückung von Fall Etiketten
- 8. Übung der Einrückung von C-Code
- 9. LaTeX: Einrückung von der zweiten Zeile
- 10. Python Einrückung in Emacs
- 11. Einrückung in Sass ändern
- 12. Verschiedene ausgegeben, wenn von cmd und Codeblöcken Ausführung
- 13. Einrückung #defines
- 14. nicht ausgegeben von Java-Programm bekommt
- 15. Einrückung in Python verstehen
- 16. Auto-Einrückung in C#
- 17. Einrückung in Latex algorithmisch
- 18. JSON Einrückung in PHP
- 19. Einrückung CSS in Emacs
- 20. Falsche Einrückung beim Bearbeiten von Yaml in Vim
- 21. PEP8 Einrückung Warnung in IntelliJ
- 22. Einrückung TabLayout
- 23. Einrückung - XAML
- 24. Einrückung mit DOMDocument in PHP
- 25. Falscher Lambda Ausdruck Einrückung
- 26. wie Debugging-Nachrichten von install.ps1 in NuGet ausgegeben werden
- 27. Wie Ausgaben von Msbuild in das VS-Ausgabefenster ausgegeben werden?
- 28. extrahieren Matrix von BS (b Spline) -Funktion ausgegeben in R
- 29. Wie ausgegeben {Name} in XML von Scala, nicht konvertieren?
- 30. Ausrichten von Text, der in Datei ausgegeben wird? Spalten
Aber die Breite der Linie ist nicht konfigurierbar durch die Einstellungen der Konsole? – Cratylus
Durch Ändern der Größe des Konsolenfensters? Es ist immer noch auf maximale Bildschirmbreite beschränkt. – mbaitoff
Nein. Es ist normalerweise in der Pufferbreite. Wenn Sie erhöhen, sind die Zeilen länger. – Cratylus