返回介绍

1.1 嵌套函数

发布于 2024-10-12 21:58:08 字数 774 浏览 0 评论 0 收藏 0

虽然 GCC 扩展支持嵌套函数(nested function),但 ISO C 不支持。

使用 -Wpedantic 参数,可以对违反 ISO C 的语法发出警告。

嵌套函数可读取外部前置变量。

int main (void) 
{
    int x = 100;

    void test() { printf("%d\n", x); }
    test();

    return 0;
}
int main (void) 
{
    void test () { printf("%d\n", x); }
                                  ^ error: 'x' undeclared.
    int x = 100;
    test();

    return 0;
}

可返回内部函数指针。

typedef void (*func_ptr_t)();

func_ptr_t make () 
{
    void a() { puts("a"); }
    return a;
}

int main (void) 
{
    make()();
    return 0;
}

GCC: Extensions to the C Language Family

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文