C関数(変数)は、最初に定義(宣言)してから使用する必要があります

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

おすすめ

転載: blog.csdn.net/weixin_42417585/article/details/104988772