printf()
を使用してデバッグ出力を使用していますが、出力は第1列。私は関数のネストレベルを区別したいのですが、関数に入るたびに出力文字列をインデントします(ファンクションの先頭にインクリメントされたstatic int indentlevel;
変数を簡単に実装し、スペースフィラーカウントとして使用します)。最後に減少する)。しかし、この欠点は、出力ラインがコンソールエッジでラップするには長すぎると、ラインの折り返し部分がコンソールの第1列から始まるということです。出力が一旦ファイルにリダイレクトされると、行は、例えば1行の長さになり、行の幅はテキストファイルビューアの設定だけに依存するので、これに注意する必要がありますか?Cプログラムのprintf()/ fprintf()によって出力されるデバッグ文字列のインデント(およびインデント)
0
A
答えて
0
テキストファイルに書き込むため、行の折り返しを気にせず、テキストビューアに決定させる必要があります。
私が使ったアプローチは、HTMLに書き込むことです。ブラウザは行の折り返しを処理します。唯一の欠点は、オープンタグと終了タグが適切にバランスされていることに注意する必要があることですが、indentlevel
変数にもそのタグが必要です。
1
gccを使用している場合は、-finstrument-functionsコンパイラオプションを使用して、各関数の入口と出口でインストルメンテーション関数を呼び出すことができます。
void __cyg_profile_func_enter (void *this_fn,
void *call_site);
void __cyg_profile_func_exit (void *this_fn,
void *call_site);
これらの機能を定義して、ネストレベルを追跡することができます。
警告:私は実際にこれを試したことがありません(これまで私がまだ知りませんでした!)。 1つの明白なGOTHCA - 計測機能を計測しないでください!
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Code-Gen-Options.html
関連する問題
- 1. 私はインデントおよびVisual Studioエディタ
- 2. printf文字列出力 "Dz↕" getch()C++
- 3. CおよびC++での文字列入力
- 4. インデント付きのC++カスタム出力ストリーム
- 5. 複数行の文字列のインデント
- 6. C/Glib呼び出し元によって解放される文字列
- 7. インデントのないPython PEP8ラッピング文字列
- 8. C++、文字列、およびポインタ
- 9. Coutの出力をどのようにインデントできますか?
- 10. .NETでインデントされたJSON文字列を縮小します。
- 11. C# - タブで文字列データを正しくインデントする方法
- 12. Cプログラミングの文字列、ポインタ、および割り当て
- 13. 出力インデントを保持する方法
- 14. Eclipseで複数行の文字列の整列/インデント
- 15. Vimのブラケット列インデックスによるコードのインデント?
- 16. 内部文字列、文字列プール、およびパーマネントスペースのガベージコレクション
- 17. 「-c」とPythonインタプリタの呼び出しとインデントの問題
- 18. C#Tabify /インデントHTML
- 19. インデント付きJava出力書式コード:
- 20. ボーク私は方法のため、およびオブジェクト/クラスの文字列データによって、リスト内のオブジェクトからメソッドを呼び出したい文字列
- 21. 見えないインデントのエラーは、ここでは、負荷が私はトリッキーなインデントによって引き起こされる問題に会ったGHCiの
- 22. Javaおよび文字列分割
- 23. Eclipseコントロールステートメントの中括弧が間違ってインデントされる
- 24. Cプログラムによるアセンブリ出力のデコード
- 25. C++の各ステートメントのEmacsインデント
- 26. Cのprintf文字列指定子\ t1?
- 27. 配列のハッシュのYAMLインデント
- 28. F#のインデント構文で使用して
- 29. Emacsインデント/インデント解除現在の行
- 30. C#およびT-SQL文字列[]パック/アンパックユーティリティ関数
しかし、行の幅はコンソールの設定でも設定できません。 – Cratylus
コンソールウィンドウのサイズを変更しますか?画面の最大幅に制限されています。 – mbaitoff
No.これは通常バッファ幅にあります。 – Cratylus