为什么C11不支持lambda函数

前端之家收集整理的这篇文章主要介绍了为什么C11不支持lambda函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
新的C 11标准支持lambda函数,我认为这是一个有用的功能.我知道C和C标准彼此不同但我不明白为什么C11不支持lambda函数.我认为它可能有很多用途.

有没有理由为什么C11标准的开发人员选择不包含此功能

解决方法

这真的只是我的意见,因为我不知道委员会的想法.

一方面,Lisp自1958年诞生以来就一直支持lambda表达式.C编程语言诞生于1972年.因此lambda表达式实际上具有比C更长的历史.所以如果你问为什么C11不支持lambda表达式,同样的问题可以问一下C89.

另一方面,lambda表达式总是一个函数式编程事物,逐渐被命令式编程语言所吸收.一些“更高”的语言(例如Java,在计划的Java 8之前)还不支持它.

最后,C和C总是相互学习,所以它可能会在下一个C标准中.目前,您可以查看Blocks,这是Apple添加的非标准扩展程序.这是来自维基百科的示例代码

#include <stdio.h>
#include <Block.h>
typedef int (^IntBlock)();

IntBlock MakeCounter(int start,int increment) {
        __block int i = start;

        return Block_copy( ^ {
                int ret = i;
                i += increment;
                return ret;
        });

}

int main(void) {
        IntBlock mycounter = MakeCounter(5,2);
        printf("First call: %d\n",mycounter());
        printf("Second call: %d\n",mycounter());
        printf("Third call: %d\n",mycounter());

        /* because it was copied,it must also be released */
        Block_release(mycounter);

        return 0;
}
/* Output:
        First call: 5
        Second call: 7
        Third call: 9
*/
原文链接:https://www.f2er.com/c/116777.html

猜你在找的C&C++相关文章