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言語は1行ずつ実行されます。最初に宣言する必要があります。
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()"重定义;不同的基类型
が、私は理由を理解していないので、私は再びその理由を見つけるためのチャンスがあります。
つづく -_-