2

可能重复:
C 中的嵌套函数

在 C 中,如果我以这种结构编写程序:

main ()
{
  int function1(...)
  {
    ....
  }
}

function 2()
{
   function1(...)
}

是否可以从编写在主函数中的函数 2 调用函数 1?还有:在 C 中,所有函数都是全局的?或者在某些情况下存在一些限制,您不能从一个函数调用另一个函数?

4

2 回答 2

3

您不能在 C 中嵌套函数定义。

int main(void)
{
  int function1(void)
  {
      /* ... */
  }
}

上述定义function1无效。

于 2013-01-09T13:26:54.593 回答
0

编辑

在 GNU C 中可以嵌套函数。我尝试了这个小片段并且它有效

#include <stdio.h>

int main()
{
    void printy() { printf("hallo\n"); }

    printy();
}

像 GNU C 页面声称http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html

嵌套函数的名称在定义它的块中是本地的

事实上,如果我将代码更改为

#include <stdio.h>

void func2();

int main()
{
    void printy() { printf("hallo\n"); }

    printy();

    func2();
}

void func2()
{
    printy();
}

我明白了

gcc test.c
/tmp/ccGhju4n.o: In function `func2':
test.c:(.text+0x3f): undefined reference to `printy'
collect2: ld returned 1 exit status
于 2013-01-09T13:27:17.500 回答