我想寫一個打印LINE,FILE,FUNC和一些其他的東西調試打印功能。轉折是,我想根據自己的調用堆棧深度自動縮進打印輸出,所以像獲取調用堆棧的深度GCC
main.c:55:main()
functions.c:33:function1()
functions.c:133:function2()
functions.c:33:function1()
functions.c:33:function1()
如果FUNCTION1立即返回,並且調用函數2次功能1。
我想這可以通過使用一個全局變量來完成,每次函數被調用時都會手動遞增,每當返回時遞減,但是這將需要相當多的代碼基礎。我想知道是否有更簡單的方法來做到這一點?
我不介意解決方案是非標準的C,只要它是標準的GNU。
[提示](https://開頭的連接。 wiktionary.org/wiki/BTDT):灌輸一些控制來限制代碼搜索堆棧的高度,因爲堆棧可能非常深。 – chux