c - 嵌套函数在 gcc 中是一件坏事吗?

标签 c gcc closures nested-function

<分区>

我知道嵌套函数不是标准 C 的一部分,但由于它们存在于 gcc 中(事实上 gcc 是我唯一关心的编译器),我倾向于经常使用它们。

这是一件坏事吗?如果是这样,你能给我看一些讨厌的例子吗? gcc 中嵌套函数的状态是什么?它们会被移除吗?

最佳答案

嵌套函数实际上不会做非嵌套函数不能做的任何事情(这就是为什么 C 和 C++ 都没有提供它们)。您说您对其他编译器不感兴趣——目前这可能是真的,但谁知道 future 会怎样?我会避免使用它们以及所有其他 GCC“增强功能”。

一个小故事可以说明这一点——我曾经在一家英国理工学院工作,该公司主要使用 DEC 盒——特别是 DEC-10 和一些 VAXen。所有的工程学院都在他们的代码中使用了许多 DEC 对 FORTRAN 的扩展——他们确信我们将永远是 DEC 商店。然后我们用 IBM 大型机替换了 DEC-10,其 FORTRAN 编译器不支持任何扩展。我可以告诉你,那天有很多人哭泣和咬牙切齿。我自己的 FORTRAN 代码(一个 8080 模拟器)在几个小时内移植到 IBM(几乎所有时间都在学习如何驱动 IBM 编译器),因为我是用标准的 FORTRAN-77 编写的。

关于c - 嵌套函数在 gcc 中是一件坏事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929281/

相关文章:

c - C 编程中哪条语句会将 x 的值更改为 60?

iphone - 我应该在我的 C++ iPhone 项目中开始使用 Clang/LLVM 吗?

rust - 如何通过原始指针将闭包作为参数传递给 C 函数?

javascript - 将带有javascript闭包的参数附加到匿名函数中的默认参数

c - float 数组上的 memset 未将数组完全清零

c - 如何在 Pro*C 查询中指定变量表达式列表?

c - 无法找到二次方程代码中的错误

c++ - typedef float _Float32的声明说明符中的两个或多个数据类型;

gcc - 如何在 64 位 RHEL 上编译 32 位应用程序?

javascript - Javascript 中的闭包混淆