編寫可重入函式要注意的地方

2021-04-02 09:54:53 字數 1064 閱讀 8947

概念:

什麼是可重入函式:函式被多個程序呼叫。

應注意的地方

1:編寫可重入函式時,應注意區域性變數的使用(如編寫c/c++語言的可重入函式時,應使用auto即預設態區域性變數或暫存器變數)。

說明:編寫c/c++語言的可重入函式時,不應使用static區域性變數,否則必須經過特殊處理,才能使函式具有可重入性。

2:編寫可重入函式時,若使用全域性變數,則應通過關中斷、訊號量(即p、v操作)等手段對其加以保護。

說明:若對所使用的全域性變數不加以保護,則此函式就不具有可重入性,即當多個程序呼叫此函式時,很有可能使有關全域性變數變為不可知狀態。

示例:假設exam是int型全域性變數,函式squre_exam返回exam平方值。那麼如下函式不具有可重入性。

unsigned int example( int para )

此函式若被多個程序呼叫的話,其結果可能是未知的,因為當(**)語句剛執行完後,另外乙個使用本函式的程序可能正好被啟用,那麼當新啟用的程序執行到此函式時,將使exam賦與另乙個不同的para值,所以當控制重新回到「temp = square_exam( )」後,計算出的temp很可能不是預想中的結果。此函式應如下改進。

unsigned int example( int para )

2:編寫可重入函式時,若使用全域性變數,則應通過關中斷、訊號量(即p、v操作)等手段對其加以保護。

說明:若對所使用的全域性變數不加以保護,則此函式就不具有可重入性,即當多個程序呼叫此函式時,很有可能使有關全域性變數變為不可知狀態。

示例:假設exam是int型全域性變數,函式squre_exam返回exam平方值。那麼如下函式不具有可重入性。

unsigned int example( int para )

此函式若被多個程序呼叫的話,其結果可能是未知的,因為當(**)語句剛執行完後,另外乙個使用本函式的程序可能正好被啟用,那麼當新啟用的程序執行到此函式時,將使exam賦與另乙個不同的para值,所以當控制重新回到「temp = square_exam( )」後,計算出的temp很可能不是預想中的結果。此函式應如下改進。

unsigned int example( int para )

PYthon 中函式編寫時需要注意的地方

函式 1.復用的第一步就是使用函式。2.乙個函式可以接受任何數量 包括0 的任何型別的值最為輸入變數,並且返回任何數 包括0 的任何型別的結果。3.python中的一切都是物件,包括字串 數字 元祖 列表 字典和函式。4.呼叫python函式help 可以列印輸出乙個函式函式的引數列表和規範文件。如...

isnumberic函式要注意的地方

isnumeric expression 備註 如果輸入表示式的計算值為有效的整數 浮點數 money 或 decimal 型別時,isnumeric 返回 1 否則返回 0。返回值為 1 時,指示可將 expression 至少轉換為上述數值型別中的一種。select isnumeric 1e 2...

ITextField要注意 的地方

textfield uitextfield alloc initwithframe cgrectmake 100,14,205,20 textfield.placeholder input sms filter content textfield.font uifont systemfontofsi...