2011-06-13 17 views
1

在編程語言理論中,嵌入塊和功能塊有什麼不同?

與棧幀有關的塊有兩種。在線塊和功能塊。

在線塊功能塊之間有什麼不同?

並假設有如下代碼。

int x = 1; 
g(z) = z + x; 

根據嵌入塊,函數g嵌套到變量x?

回答

1

功能塊:
void func(){...}; //在C或C++

(defun定義FUNC ...)//在CLISP

樂趣FUNC()= ... //以ml

功能塊是一個封裝的所述塊功能。
在C中,當函數返回時,函數的激活記錄從堆棧中刪除。然而,在像ML,CLISP這樣的函數語言中,函數的返回並不總是意味着刪除棧幀。
因爲該功能可以在以後使用。

嵌入塊是顯示嵌套結構的塊。

int x = 1; 
g(z) = z + x; 

當函數g使用在線塊,函數g取變量x爲1的函數g不知道X的值只與函數g的激活記錄。然而,函數g可以知道x的值的原因是它使用靜態鏈接,靜態鏈接指向最近的嵌套塊。

功能塊和嵌入塊之間的區別在於功能塊返回時總是不會從堆棧框中刪除功能塊。

相關問題