0
我使用普通的舊c。使非重入函數重入
我有一個函數使用靜態局部變量,因此是不可重入的。我想刪除靜態本地的使用並使該功能可重入。
有關如何操作的任何提示或設計建議?
這個問題太模糊了嗎?它是否需要關於我目前正在使用的設計的更多細節?還是在這種情況下可以遵循的一般設計模式?
我使用普通的舊c。使非重入函數重入
我有一個函數使用靜態局部變量,因此是不可重入的。我想刪除靜態本地的使用並使該功能可重入。
有關如何操作的任何提示或設計建議?
這個問題太模糊了嗎?它是否需要關於我目前正在使用的設計的更多細節?還是在這種情況下可以遵循的一般設計模式?
而不是使用靜態本地維護狀態,讓調用者將這些狀態變量作爲參數傳遞給您的函數。這意味着你的來電者必須保持狀態,但這通常是你想要的。
你可以用這個解決方案的一個保護代碼:
您通常無法對現有功能進行操作,您需要使用不同的界面創建新功能。例如,看看'strtok()'和'strtok_r()'之間的區別。 – Barmar
*是否需要更多關於我目前正在使用的設計的細節?*是的,它需要更多細節。 – 0decimal0
看看這篇文章:http://stackoverflow.com/questions/261311/what-is-the-difference-between-re-entrant-function-and-recursive-function-in-c – 0decimal0