首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的内部函数

C中的内部函数
EN

Stack Overflow用户
提问于 2011-09-06 11:41:57
回答 8查看 3K关注 0票数 7

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

代码语言:javascript
复制
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");
}

我所犯的错误是:

  • 在“主要”职能中:
  • 第8行:错误:“func”的静态声明跟随非静态声明
  • 第4行:错误:之前的“func”声明在这里
  • 第3行:警告:返回类型'main‘不是'int’

我认为C允许嵌套类,因为以下代码运行良好:

代码语言:javascript
复制
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");
}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-06 11:49:14

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

代码语言:javascript
复制
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;
}

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

票数 14
EN

Stack Overflow用户

发布于 2011-09-06 11:43:38

ANSI C不允许嵌套函数定义。并且您的主要函数应该返回int

票数 9
EN

Stack Overflow用户

发布于 2011-09-06 11:44:52

嵌套函数在标准C/C++中不允许。如果以后想要定义func(),只需(向前)在main()中声明它。

代码语言:javascript
复制
int main()
{
  int a=5, b=60, func();

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

  int func();  // <---- declare inside main()

printf("\nI am in main-2");
}


int func(){    // <---- define later
  printf("\nI am in funct");
  return 1;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7319325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档