在线块和功能块,有什么不同?

时间:2011-06-13 01:19:13

标签: programming-languages nested block

在程序设计语言理论中,

与堆栈帧相关的块有两种。内联块和功能块。

内联阻止功能块有什么不同?

并假设有如下代码。

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

根据内联块,函数g是否嵌套到变量x?

1 个答案:

答案 0 :(得分:1)

功能块:
void func(){...}; //在c或c ++中

(defun func ...)// in clisp

fun func()= ... // in ml

功能块是包装功能的块 在C中,当函数返回时,函数的激活记录将从堆栈中删除 但是,在像ML,CLISP这样的函数式语言中,函数的返回并不总是意味着删除堆栈帧 因为该功能可以在以后使用。

内嵌块是显示嵌套结构的块。

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

当函数g使用In-line块时,函数g将变量x取为1.函数g不知道x的值只有函数g的激活记录。但是函数g可以知道x的值的原因是它使用静态链接,静态链接指向最接近的嵌套块。

功能块和内联块之间的区别在于,当函数返回时,不会从堆栈帧中删除功能块。