C语言中的闭包/功能块

C语言中的闭包/功能块,c,closures,C,Closures,我一直认为在C语言中使用支撑块作为闭包块是非常方便的。主要原因是我可以在IDE中更好地使用语法折叠,而不会增加代码的额外复杂性,例如添加额外的函数 // Block 1 { int i; i = some_work(i); j = i; } // Block 2 { ... } 我不知道这在C中是否是正确的解决方案。是否有任何编程标准提到C中的闭包块 那些不是,它们只是范围块 您不能像在本地支持闭包的语言中使用闭包那样使用它们。例如,您不能

我一直认为在C语言中使用支撑块作为闭包块是非常方便的。主要原因是我可以在IDE中更好地使用语法折叠,而不会增加代码的额外复杂性,例如添加额外的函数

 // Block 1
 {
     int i; 
     i = some_work(i);
     j = i;
 }

 // Block 2
 {
    ...
 }
我不知道这在C中是否是正确的解决方案。是否有任何编程标准提到C中的闭包块

那些不是,它们只是范围块

您不能像在本地支持闭包的语言中使用闭包那样使用它们。例如,您不能存储对此类块的引用并在以后执行它

它们在C99中不太有用,因为现在你可以在任何地方声明新变量。

那些不是,它们只是作用域块

您不能像在本地支持闭包的语言中使用闭包那样使用它们。例如,您不能存储对此类块的引用并在以后执行它


它们在C99中不太有用,因为现在可以在任何地方声明新变量。

大多数编程标准提倡将长函数划分为短函数,并使用空行将函数与较小的单元分开

两个主要原因是可读性和可测试性

如果你把一个长函数分成几个小函数,每个小函数都可以单独进行单元测试

您正在做的事情比仅仅拥有一个大函数要好,但是您错过了可测试性部分

根据代码的外观,您可能还缺少可读性。记住,函数有一个描述它的名称。块没有名称,因此需要注释来描述它

如果使用正确,可以使用块来提高可读性。但是,对于简单的空行也是如此。与空行相比,块的优点是它限制了局部变量的范围,从而提高了可读性


这样,对于您创建的每个块,您应该考虑它是否对应于空行或函数调用。在后一种情况下,将块转换为单独的函数。

大多数编程标准主张将长函数划分为短函数,并使用空行将函数与较小的单元分开

两个主要原因是可读性和可测试性

如果你把一个长函数分成几个小函数,每个小函数都可以单独进行单元测试

您正在做的事情比仅仅拥有一个大函数要好,但是您错过了可测试性部分

根据代码的外观,您可能还缺少可读性。记住,函数有一个描述它的名称。块没有名称,因此需要注释来描述它

如果使用正确,可以使用块来提高可读性。但是,对于简单的空行也是如此。与空行相比,块的优点是它限制了局部变量的范围,从而提高了可读性

这样,对于您创建的每个块,您应该考虑它是否对应于空行或函数调用。在后一种情况下,将块转换为单独的函数