main()函数对程序意味着什么

时间:2015-09-15 14:21:49

标签: c

C中的main()函数有什么特别之处? 在我的嵌入式C编译器中,它告诉程序计数器从哪里开始。无论首先(作为指令)出现在主要功能中,它都将首先放在闪存中。那么PC程序呢?当我们为PC编程时,main()的含义是什么?

7 个答案:

答案 0 :(得分:5)

托管实现(基本上,任何带有操作系统的东西)上,main被定义为程序的入口点。它是启动程序时运行时环境将调用的函数。

独立实现(嵌入式系统,PLC等)上,入口点就是实现所说的。那可能是main,也可能是别的。

答案 1 :(得分:3)

简单来说:

main函数没有什么特别之处,除了程序启动时系统调用它。

答案 2 :(得分:0)

当您的操作系统运行程序时,您的程序需要将控制权交给它。操作系统只知道在main()函数中程序的内部开始。

答案 3 :(得分:0)

你在互联网上搜索过吗?请查看herehere

  

当操作系统在C中运行程序时,它会通过控制   计算机到那个程序......关键是操作系统需要知道在哪里   在程序内部需要传递控件。在C的情况下   语言程序,它是操作系统的main()函数   正在寻找。

答案 4 :(得分:0)

功能 main 很特别 - 您的程序在开头执行 主要。这意味着每个程序必须有一个主要的地方。 main通常会调用其他函数来帮助执行它的工作,有些是你写的,还有其他的 来自为您提供的库。

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

答案 5 :(得分:0)

主要功能是“C程序”启动的地方,就C标准而言。但是在标准之外的现实世界中,有硬件,在调用main()之前还需要做其他事情。

在典型的嵌入式系统上,您有一个复位中断服务程序,在上电复位(或其他复位原因)后结束。从此ISR中,应按以下顺序完成以下操作:

  • 设置堆栈指针。
  • 设置所有其他与内存映射相关的内容(MMU寄存器)
  • 初始化看门狗和低电压检测等安全功能。
  • 初始化所有静态存储持续时间变量。
  • 调用main()。

因此,当调用main()时,您可以获得足够稳定的环境,以便标准C程序按预期执行。

使用main()作为重置向量是非正统和非标准的。 C标准要求在调用main()之前已经初始化了静态存储持续时间变量。另外,你真的不想做基本的事情,比如在main()中设置堆栈指针,因为这会弄乱你在main()中的所有局部变量。

答案 6 :(得分:0)

主要功能允许C程序找到程序的开头。程序启动时总是调用main函数。