單片機程序中函數嵌套能套多少層?
(2011/11/1 9:36:00)
就比如通常的52,256byteram的片子,假如程序data(堆棧)空間充裕的情況下。
1、理論上最大能套多少層?是不是無限的呢,只要data(堆棧)夠?
2、在調用函數的時候哪些東西是需要壓堆棧的?能不能在程序完成后大概的估計出堆棧深度?目前知道的有pc,sp,自動變量需要壓堆棧。
3、程序編譯后,結果顯示的data字節包括哪些使用?我們能不能從程序上大概推算出編譯后的data值?
網友評論:現在程序就有點怪怪的問題,還好可以規避一下,但一有風吹草動我就懷疑堆棧的問題,雖然我也可以測出堆棧深度,但沒個明確說法我還是不放心。
網友評論:編譯完的list文件*.lst里面有。
調用函數的參數有的也是堆棧傳的,所以啊,盡量的不要太多。
還有就是可以讓它跑一遍,包括最深的地方都跑一下,看看到底用了多少。
此外,也可以用內聯函數inline可以把函數當作宏那樣,每次用都復制一遍代碼,省堆?臻g啊。像i2c的開始,發送一個字節什么的。結構上看還是一個個的函數比較清晰。