繁体   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