当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Nested Functions in C

发表于: 2012-04-19   作者:bookjovi   来源:转载   浏览:
摘要:   Nested Functions 又称closure,属于functional language中的概念,一直以为C中是不支持closure的,现在看来我错了,不过C标准中是不支持的,而GCC支持。   既然GCC支持了closure,那么 lexical scoping自然也支持了,同时在C中label也是可以在nested functions中自由跳转的

 

Nested Functions 又称closure,属于functional language中的概念,一直以为C中是不支持closure的,现在看来我错了,不过C标准中是不支持的,而GCC支持。

 

既然GCC支持了closure,那么 lexical scoping自然也支持了,同时在C中label也是可以在nested functions中自由跳转的,还有nested function可作为返回地址被外部调用,这与lisp中的概念都一致。

 

 

foo (double a, double b)
     {
       double square (double z) { return z * z; }
     
       return square (a) + square (b);
     }


bar (int *array, int offset, int size)
     {
       int access (int *array, int index)
         { return array[index + offset]; }
       int i;
       /* ... */
       for (i = 0; i < size; i++)
         /* ... */ access (array, i) /* ... */
     }


bar (int *array, int offset, int size)
     {
       __label__ failure;
       int access (int *array, int index)
         {
           if (index > size)
             goto failure;
           return array[index + offset];
         }
       int i;
       /* ... */
       for (i = 0; i < size; i++)
         /* ... */ access (array, i) /* ... */
       /* ... */
       return 0;
     
      /* Control comes here from access
         if it detects an error.  */
      failure:
       return -1;
     }

Nested Functions in C

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本代码实现两个功能。一个是选择列表某一行之后,行后面的小圆点由空心变成蓝色实心,表面当前行被
Nested types Class和Structure里可以nest任意多的类型(包括class),但是Enum里不可以。 class {
by Kurt Bittner General Manager Rational Unified Process Business Unit 多数人从用例开始就走入
看过之前的 virtual function可以知道其实现模型: 每一个 class 有一个 virtual table. 内含该 clas
Oracle DECODE & CASE Functions http://www.psoug.org/reference/decode_case.html Oracle DECODE
这篇可能帮我们更好的理解B-spline。 The equation for k-order B-spline with n+1 control points
Summary: 函数中的条件逻辑使人难以看清正常的执行路径。使用卫语句表现所有特殊情况。 动机: 条件
Demo on working with "Nested / SubWorkflows" By Avinash Palavai, StraVis IT Solutions from Li
This is based on the description of http://docs.oracle.com/javase/tutorial/java/javaOO/nested
//概况 //基本上,当你希望一个PLSQL(或者java或者c)程序作为数据源,而不是表, //你可能会用到管
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号