Programming languages 在线路块和功能块中,有什么不同?

Programming languages 在线路块和功能块中,有什么不同?,programming-languages,nested,block,Programming Languages,Nested,Block,在编程语言理论中 与堆栈帧相关的块有两种。在线块和功能块 行内块和功能块之间有什么不同 假设有如下代码 int x = 1; g(z) = z + x; 根据行内块,函数g是否嵌套到变量x?函数块: void func(){…};//在C或C++中 (在clisp中定义函数…// fun func()=…//单位:毫升 功能块是包装功能的块。 在C语言中,当函数返回时,函数的激活记录将从堆栈中删除。 然而,在ML、CLISP等函数式语言中,函数的返回并不总是意味着删除堆栈帧。 因为这个函数可以

在编程语言理论中

与堆栈帧相关的块有两种。在线块和功能块

行内块功能块之间有什么不同

假设有如下代码

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

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

函数块:
void func(){…};//在C或C++中 (在clisp中定义函数…//

fun func()=…//单位:毫升

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

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

int x = 1;  
g(z) = z + x;
当函数g在行块中使用时,函数g将变量x取为1。函数g不知道x的值,只知道函数g的激活记录。然而,函数g之所以能够知道x的值,是因为它使用了静态链接,并且静态链接指向最接近的嵌套块


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

函数块:
void func(){…};//在C或C++中 (在clisp中定义函数…//

fun func()=…//单位:毫升

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

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

int x = 1;  
g(z) = z + x;
当函数g在行块中使用时,函数g将变量x取为1。函数g不知道x的值,只知道函数g的激活记录。然而,函数g之所以能够知道x的值,是因为它使用了静态链接,并且静态链接指向最接近的嵌套块

函数块和内联块的区别在于,当函数返回时,函数块始终不会从堆栈帧中删除