我們編寫程序時一般有個習慣,寫函數都愛把函數寫到主函數的前面,
一般常用的寫法:
#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,會導致無窮循環。
這個也要注意編寫程序中盡量避免函數的相互調用出現混亂。