簡體   English   中英

main()函數對程序意味着什么

[英]What does the main() function mean for a program

C中的main()函數有什么特別之處? 在我的嵌入式C編譯器中,它告訴程序計數器從哪里開始。 無論首先(作為指令)出現在主要功能中,它都將首先放在閃存中。 那么PC程序呢? 當我們為PC編程時main()的含義是什么?

托管實現 (基本上,任何具有操作系統的實現)上, main被定義為程序的入口點。 它是啟動程序時運行時環境將調用的函數。

獨立實現 (嵌入式系統,PLC等)上,切入點就是實現所說的。 這可能是main ,或者可能是其他的東西。

簡單來說:

除了程序啟動時系統調用它之外, main功能沒有什么特別之處。

當您的操作系統運行程序時,您的程序需要將控制權交給它。 操作系統只知道在main()函數中從程序內部開始的位置。

你在互聯網上搜索過嗎? 看看這里 ,也在這里

當操作系統在C中運行程序時,它會將計算機的控制權傳遞給該程序......關鍵是操作系統需要知道程序內部需要傳遞控件的位置。 對於C語言程序,它是操作系統正在尋找的main()函數。

函數main是特殊的 - 您的程序在main的開頭執行。 這意味着每個程序必須有一個主要的地方。 main通常會調用其他函數來幫助執行其工作,一些是您編寫的,另一些是來自為您提供的庫。

你可以在每本可能的C書中找到它。

就C標准而言,主要功能是“C程序”的開始。 但是在標准之外的現實世界中,有硬件,在調用main()之前還需要做其他事情。

在典型的嵌入式系統中,您有一個復位中斷服務程序,在上電復位(或其他復位原因)后結束。 從此ISR中,應按以下順序執行以下操作:

  • 設置堆棧指針。
  • 設置所有其他與內存映射相關的內容(MMU寄存器)
  • 初始化了看門狗和低電壓檢測等安全功能。
  • 初始化所有靜態存儲持續時間變量。
  • 調用main()。

因此,當調用main()時,您可以獲得足夠穩定的環境,以便標准C程序按預期執行。

使用main()作為重置向量是非正統和非標准的。 C標准要求在調用main()之前已初始化靜態存儲持續時間變量。 另外,你真的不想做基本的事情,比如在main()中設置堆棧指針,因為這會搞亂你在main()中的所有局部變量。

主要功能允許C程序找到程序的開頭。 程序啟動時始終調用main函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM