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