【问题标题】:Under which if any c standards are local functions permitted如果任何 c 标准是允许的本地功能,则在该标准下
【发布时间】:2015-05-24 06:37:47
【问题描述】:

我有类似的代码

int  myfunction (int param)
{
  void tidyup( void)
  {
    // free dynamically allocated memory 
  }

while (1) {
// some Processing

  if error {
    tidyup();
    return -1;
  }
  If success { 

    tidyup();

    return 1;

    }

// further processing

  } // end while 1

}

gcc 设置 -Wall 不会抱怨,但我读到本地函数在 c 中是非法的。

这是一道 c 题,不是 c#、c++ c.net 等。

【问题讨论】:

    标签: c function language-lawyer nested-function


    【解决方案1】:

    嵌套函数是 GCC 扩展,并不是任何标准的真正组成部分:

    老实说,我不知道是否有其他编译器支持该功能。

    【讨论】:

      【解决方案2】:

      C 标准中未指定局部函数或嵌套函数。根据 C 标准,任何函数定义都需要出现在任何其他函数定义之外。

      但是,它们被支持为 GCC extension

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-17
        • 1970-01-01
        • 2019-02-04
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多