日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]C語(yǔ)言標(biāo)準(zhǔn)在一開(kāi)始(C90標(biāo)準(zhǔn) 5.1.2條),就規(guī)定了程序的執(zhí)行環(huán)境。對(duì)于沒(méi)有操作系統(tǒng)的環(huán)境來(lái)說(shuō),C程序的入口函數(shù)是什么都可以(也就是說(shuō)的在單片機(jī)的C程序里,或者在操作系統(tǒng)的底層代碼的C入口處,不需要是main函數(shù))。

C語(yǔ)言標(biāo)準(zhǔn)在一開(kāi)始(C90標(biāo)準(zhǔn) 5.1.2條),就規(guī)定了程序的執(zhí)行環(huán)境。對(duì)于沒(méi)有操作系統(tǒng)的環(huán)境來(lái)說(shuō),C程序的入口函數(shù)是什么都可以(也就是說(shuō)的在單片機(jī)的C程序里,或者在操作系統(tǒng)的底層代碼的C入口處,不需要是main函數(shù))。

對(duì)于有操作系統(tǒng)的環(huán)境來(lái)說(shuō)(C入門者學(xué)習(xí)C的環(huán)境),C程序的入口是main函數(shù)。而且聲明為以下兩者之一

int main(void);

int main(int argc, char * argv[]);

對(duì)于 操作系統(tǒng)的執(zhí)行環(huán)境的具體實(shí)現(xiàn)來(lái)說(shuō),鏈接器會(huì)把“你寫的C程序(以main開(kāi)頭)”和另外的啟動(dòng)程序相鏈接,而那些啟動(dòng)程序里面會(huì)引用你寫的main函數(shù)。這樣從程序員的視角來(lái)看,“C程序的入口”是main。

但是如果我們要指定我們的程序的入口為mymain 時(shí),在linux下編譯直接出現(xiàn)undefined reference to `main'的錯(cuò)誤

C語(yǔ)言沒(méi)說(shuō)C程序一定要有main()函數(shù)。c的編譯器工作之前先要做cpp(比如頭文件展開(kāi))一樣,編譯完了以后還要鏈接成可執(zhí)行文件。鏈接的時(shí)候需要知道程序的入口是什么。不管是什么總歸得有的名字,所以main被選中了。你不喜歡這個(gè)名字,可以指定你自己的入口。

參見(jiàn)如下文檔的 -e 或者--entry參數(shù)。

main函數(shù)就是這個(gè)約定好的用戶代碼默認(rèn)入口

gcc hello.c -e mymain -nostartfiles 編譯后發(fā)現(xiàn)我們的可執(zhí)行文件a.out生成了,并且執(zhí)行是,我們的hello linux也出現(xiàn)了

-e參數(shù)指定我們的程序的入口

-nostartfiles 連接的時(shí)候不使用標(biāo)準(zhǔn)系統(tǒng)的啟動(dòng)文件

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉