任何人请详细说明这些错误:-
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");
}我所犯的错误是:
我认为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");
}发布于 2011-09-06 11:49:14
您正在使用GNU编译器的扩展,它允许嵌套函数的声明。错误来自这样一个事实: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;
}有关更多详细信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html。
发布于 2011-09-06 11:43:38
ANSI C不允许嵌套函数定义。并且您的主要函数应该返回int。
发布于 2011-09-06 11:44:52
嵌套函数在标准C/C++中不允许。如果以后想要定义func(),只需(向前)在main()中声明它。
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;
}https://stackoverflow.com/questions/7319325
复制相似问题