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. printfを使ってBashで文字列をインデントする方法は?
- 2. 私はインデントおよびVisual Studioエディタ
- 3. #システムのインデント出力
- 4. printf文字列出力 "Dz↕" getch()C++
- 5. テキストエリアの文字列は、常にインデント
- 6. インデント付きのC++カスタム出力ストリーム
- 7. printfによる文字列の出力フォーマット
- 8. CおよびC++での文字列入力
- 9. 複数行の文字列のインデント
- 10. どのようにvimのインデント線をiTerm上のインデント線に(連続して)インデントさせるのですか?
- 11. インデントのないPython PEP8ラッピング文字列
- 12. VBOME MS-WORD数字インデント文字列
- 13. C/Glib呼び出し元によって解放される文字列
- 14. fprintf構文のように文字列を定義する
- 15. 出力およびランダム化文字列配列なし
- 16. C++、文字列、およびポインタ
- 17. C#別の連結された文字列と変数によって文字列名を呼び出す
- 18. Coutの出力をどのようにインデントできますか?
- 19. C# - タブで文字列データを正しくインデントする方法
- 20. .NETでインデントされたJSON文字列を縮小します。
- 21. Google Appによって呼び出されるGScriptのデバッグ
- 22. Rmarkdown:HTML出力のTOC項目のインデント
- 23. "atコマンド"によって呼び出されるプログラムへの入力の送信
- 24. Cプログラミングの文字列、ポインタ、および割り当て
- 25. C++/CLIおよび.NETうち、文字列のC#で
- 26. 再帰メソッド付きのネストされたインデント付き出力
- 27. 文字列と二重の結果をインデントする方法java
- 28. 出力インデントを保持する方法
- 29. printfがC言語で文字配列を出力しない
- 30. Eclipseで複数行の文字列の整列/インデント
しかし、行の幅はコンソールの設定でも設定できません。 – Cratylus
コンソールウィンドウのサイズを変更しますか?画面の最大幅に制限されています。 – mbaitoff
No.これは通常バッファ幅にあります。 – Cratylus