我們編寫程序時一般有個習慣,寫函數都愛把函數寫到主函數的前面,
一般常用的寫法:
#include<iostream>
using namespace std;
void A()
{
cout<<"函數A\n";
}
void B()
{
cout<<"函數B\n";
}
int main()
{
A();
B();
return 0;
}
運行結果:

現在看著很正常是吧?運行結果也對,我們一般定義函數都習慣這樣寫,以為這樣就不用聲明函數啦。
那麼現在我們看下這個程序修改後這個源碼是不是還可以這樣?而不用聲明呢?
#include<iostream>
using namespace std;
void A()
{
cout<<"函數A\n";
B();
}
void B()
{
cout<<"函數B\n";
A();
}
int main()
{
A();
B();
return 0;
}
此程序未聲明前會報錯,原因沒有聲明。
本欄目

看到上面沒?出現了報錯,這時候就必須要對函數進行聲明了。
聲明修改後正確的源碼為:
#include<iostream>
using namespace std;
void A();
void B();
void A()
{
cout<<"函數A\n";
B();
}
void B()
{
cout<<"函數B\n";
A();
}
int main()
{
A();
B();
return 0;
}
注意,此程序雖然修改後能正確運行但是由於在函數A中調用函數B,函數B中調用函數A,會導致無窮循環。
這個也要注意編寫程序中盡量避免函數的相互調用出現混亂。