2020年3月20日
今天在学习C语言时,学到了函数是不能嵌套定义的,应该平行定义,如下面这样:
#include <stdio.h> //by [C语言中文网](http://c.biancheng.net/view/1851.html)
void func2(){ //函数2
printf("C语言小白变怪兽");
}
void func1(){ //函数1
printf("http://c.biancheng.net");
func2(); //调用函数2
}
int main(){ //主函数
func1(); //调用函数1
return 0;
}
但是跟小伙伴写的时候,更改了顺序:
#include <stdio.h>
void func1(){ //这里函数func1()的位置提前了
printf("http://c.biancheng.net");
func2();
}
void func2(){
printf("C语言小白变怪兽");
}
int main(){
func1();
return 0;
} //此段代码报错
编译,于是报错:
意思是func2 未定义
,明明已经定义了啊,最后咨询了大佬,才想明白:
C语言是一行一行执行的,需要先声明,在调用
void func1(){
printf("http://c.biancheng.net");
func2();
}
在这段程序中,func1
调用了func2
,但是此时func2
还未声明,故报错,
所以需要在提前声明下func2
才能调用。
提前声明就可以了:
#include <stdio.h>
void func2(); //提前声明fun2(),以供调用
void func1(){ //这里声明了func1(),故在main()中可直接调用
printf("http://c.biancheng.net");
//也可以在这一行进行fun2()的声明,只要是在func2()之前就可以
func2();
}
void func2(){
printf("C语言小白变怪兽");
}
int main(){
func1();
return 0;
}
但是错误代码C2371"func2()"重定义;不同的基类型
,却不懂为何,有机会再找找原因。
to be continue -_–