C语言杂散的问题
零散感悟
- 程序的可重入性
- 關于SP棧指針和PC程序運行指針和lr寄存器
- SSCANF函數的感悟
- sprintf函數的問題
- 關于斷言assert
- 使用typedef定義平臺無關類型
- break、continue在switch和循環中的不同
程序的可重入性
當用可重入函數主要用于多任務環境中,一個可重入函數簡單來說就是可以被中斷的函數,也就是說,可以在這函數執行的任何時刻中斷它,轉入OS調度下去執行另外一段代碼,而返回控制時不會出什么錯誤。而不可重入函數由于使用了一些系統資源,比如全局變量區,中斷向量等,所以它如果被中斷的話,可能會出現問題,這類函數是不能運行在多任務環境下的。
可重入函數也可以這樣理解,重入即表示重復進入,首先這意味著這個函數可以被中斷,其次意味著它除了使用自己棧上的變量以外不依賴與任何環境(包括static),這樣的函數就是purecode(純代碼)可重入,可以允許有多個該函數的副本在運行,由于他們使用的是分離的棧,所以不會互相干擾。如果確實需要訪問全局變量(static),一定要注意實施互斥手段,可重入函數在并行運行環境中非常重要,但一般要為訪問全局變量付出一些
總結
- 上一篇: C++尽量以const,enum,inl
- 下一篇: bios后不启动不了怎么回事 电脑开机无