2011-06-13 66 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的值的原因是它使用静态链接,静态链接指向最近的嵌套块。

功能块和嵌入块之间的区别在于功能块返回时总是不会从堆栈框中删除功能块。

相关问题