c語(yǔ)言編譯器對(duì)于源代碼的編譯是順序編譯的,當(dāng)你的任意一個(gè)函數(shù)中調(diào)用某個(gè)函數(shù)的時(shí)候,這個(gè)函數(shù)的原型必須在調(diào)用之前聲明孝埋,否則就會(huì)出現(xiàn)編譯錯(cuò)誤,例如:
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)睢陽(yáng),10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
void a(int b)
{
printf("%d\n", b);
}
int main(int argc, char *argv)
{
a(10);
return 0;
}
以上的程序遲旁就沒(méi)有問(wèn)題巧旦螞,如果兩個(gè)函數(shù)的位置倒一下,就會(huì)報(bào)錯(cuò),解決辦法是,將函數(shù)“a”的原型在main之前聲明,如:
void a(int b);
int main(int argc, char *argv)
{
a(10);
return 0;
}
void a(int b)
{
printf("%d\n", b);
}
你可以這樣試試。
main函數(shù)之前--真正的函數(shù)執(zhí)行入口或開始梁姿\x0d\x0a\x0d\x0a一種解釋\x0d\x0a\x0d\x0a實(shí)際上,在可執(zhí)行文件被加載之后,控制權(quán)立即交給由編譯器插入的Start函數(shù),它將對(duì)后帆哪面這些全局變量進(jìn)行準(zhǔn)備:\x0d\x0a _osver 操作系統(tǒng)的構(gòu)件編號(hào)\x0d\x0a _winmajor 操作系統(tǒng)的主版本號(hào)\x0d\x0a _winminor 操作系統(tǒng)的次版本號(hào)\x0d\x0a _winver 操作系統(tǒng)完全版本號(hào)\x0d\x0a __argc 命令行參數(shù)個(gè)數(shù)\x0d\x0a __argv 指向參數(shù)字符串的指針數(shù)組\x0d\x0a _environ 指向環(huán)境變量字符串的指針數(shù)組\x0d\x0aStart函數(shù)初態(tài)渣碼始化堆并調(diào)用main函數(shù).mian函數(shù)返回之后,Start函數(shù)調(diào)用Exit函數(shù)結(jié)束該進(jìn)程.\x0d\x0a啟動(dòng)函數(shù)Start的源代碼在:\x0d\x0a crt0.c Microsoft Visual C++\x0d\x0a c0w.asm Borladn C++
main函數(shù)不是必須放在其他函數(shù)之前,也就是說(shuō)可以放在其他函數(shù)的上面,下面,都可以鉛晌念。
編譯器編譯時(shí),是逐行編譯的。但是它是先找到主函數(shù),主函數(shù)編譯完也表明這個(gè)程序已經(jīng)編譯完了。如果主函數(shù)放在其他函數(shù)之前,那么在主函數(shù)中要調(diào)用的子函數(shù)(自定義函數(shù))要先在主函數(shù)之前聲明它的謹(jǐn)中存在。如:void fun(int n,int m);
在多數(shù)編程語(yǔ)言里,變量、函數(shù)(過(guò)程)、結(jié)構(gòu)體、類、對(duì)象等都是必須先聲明(或在使用它之前定義)后使用。未聲明或未在使用它的函數(shù)之前定義的,編譯都無(wú)法通過(guò)。而且會(huì)報(bào)錯(cuò):未定義的變量或函數(shù)等.
擴(kuò)展資料:
main函數(shù),又稱主函數(shù),是程序執(zhí)行的起點(diǎn)。C程序最大的特點(diǎn)就是所有的程序都是用函數(shù)來(lái)裝配的。main()稱之為主函數(shù),是所有程序運(yùn)行的入口。
其余函數(shù)分為有參或無(wú)參兩種,均由main()函數(shù)或其它一般函數(shù)調(diào)用,若調(diào)用的是有參函數(shù),則參數(shù)在調(diào)用時(shí)傳遞。
int?main(void)//整數(shù)類型?主函數(shù)(無(wú)類型)
{
...
y1=f1(x1,x2);//賦值過(guò)程
...
}
f1(int?a,int?b)//f1(整數(shù)類型?a,整數(shù)類型?b)
{
//百度百科示例代碼.....
Y2=f2(x3,x4);//賦值過(guò)程
//百度百科示例代碼
}
f2(int?m,int?n)//f2(整數(shù)類型?m,整數(shù)類槐困型?n)
{
//百度百科示例代碼
參考資料來(lái)源:百度百科-main函數(shù)