可能重复:
Nested function in C
在C中,如果我在这个结构中写了一个程序:
main ()
{
int function1(...)
{
....
}
}
function 2()
{
function1(...)
}
可以从main函数中写入的function2调用function1吗? 并且: 在C中,所有功能都是全局的?或者在某些情况下有一些限制,从一个功能你不能再称为另一个功能?
答案 0 :(得分:3)
您无法在C中嵌套函数定义。
int main(void)
{
int function1(void)
{
/* ... */
}
}
上述function1
的定义无效。
答案 1 :(得分: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