C中的函数内部函数

Kun*_*asu 7 c gcc nested-function

有人请详细说明这些错误: -

void main()
{
    int a=5, b=60, func();

    printf("\nI am in main-1");

    int func(){
        printf("\nI am in funct");
        return 1;
    }
    func();
    printf("\nI am in main-2");
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

  • 在功能'main'中:
  • 第8行:错误:'func'的静态声明遵循非静态声明
  • 第4行:错误:'func'的先前声明在这里
  • 第3行:警告:'main'的返回类型不是'int'

我认为C允许嵌套类,因为以下代码工作正常:

void outerfunc()
{
    int func()
    {
        printf("\nI am in funct");
        return 1;
    }

    func();
}

void main()
{
    printf("\nI am in main-1");

    outerfunc();
    printf("\nI am in main-2");
}
Run Code Online (Sandbox Code Playgroud)

Nor*_*ame 14

您正在使用GNU C编译器的扩展,它允许嵌套函数的声明.错误来自这样一个事实,即GCC扩展下的嵌套函数的前向声明需要在auto关键字前加上.

int a=20,b=11;
int main()
{
  int a=5, b=60; 
  auto int func(); // <--------- here
  func(); // <- call it
  printf("\nI am in main-1");

  int func(){
  printf("\nI am in funct");
  return 1;
  }

printf("\nI am in main-2");
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html.


Mu *_*iao 9

ANSI C不允许嵌套函数定义.你的main函数应该返回int.