什麼是 C/C++ 中的可重入函式?
在這裡,我們將瞭解什麼是 C 或 C++ 中的可重入函式。如果在函式執行期間可以對其進行中斷、然後為 ISR(中斷服務例程)提供服務接著恢復任務,那麼這個函式就稱為可重入函式。這種型別的函式用於遞迴、硬體中斷處理等不同的情況。
可重入函式應具備一些屬性。如下列出:
這種型別的函式不會使用任何全域性或靜態變數。雖然沒有任何限制,但通常不建議這樣做。這是因為中斷可能會更改全域性變數的值,因此從 ISR 返回後,函式可能會獲取一些新值,並且結果也會有所不同。
可重入函式不應修改其自身的程式碼。我們需要函式的操作在整個程式碼中保持一致。
另一個屬性是可重入函式不應呼叫任何其他不可重入函式。
示例
int x;
int my_function() {
return x * 10;
}
int my_second_function() {
return my_function() * 20;
}此處這兩個函式都不是可重入的。第一個函式使用了一個全域性變數,因此它不是可重入的。第二個函式呼叫了一個不可重入的函式,所以它也不是可重入函式。
示例
int my_function(int x) {
return x * 10;
}
int my_second_function(int x) {
return my_function(x) * 20;
}這兩個函式現在是可重入函數了。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP