可能重复:
In C, how is the main() method initially called?谁在C调用的主要功能
我想知道,谁调用C. 的主要功能
什么是主要的实际用途函数(为什么main是特殊的/必要的)?
我可以用主功能写一个c程序吗?
可能重复:
In C, how is the main() method initially called?谁在C调用的主要功能
我想知道,谁调用C. 的主要功能
什么是主要的实际用途函数(为什么main是特殊的/必要的)?
我可以用主功能写一个c程序吗?
当你要求你的操作系统运行一个文件时,它会将它加载到内存中,然后跳转到起始点(_start
等)。此时,有一个代码,调用main
然后退出(链接器对此部分负责)。如果您不使用main
函数编写程序,链接程序会给您一个错误,因为它找不到它。
的main
函数被调用,在实践中,由C运行时。
你可以编写一个没有main
的程序,但它的必须有有一个入口点。不同的操作系统允许您为程序指定不同的入口点,但它们的用途与main
相同。在Windows上,您可以使用WinMain
。在Linux上,你可以在没有CRT的情况下连接并定义你自己的_start
功能(但它不能返回!)
没有入口点的程序就像一辆没有车轮的车:它不会去任何地方。
是不是另一种方式?程序调用并链接到C运行时? – Cratylus 2012-02-04 22:06:29
更像是一辆没有起动引擎的汽车,汽车在那里,它可以做它应有的一切,但没有什么能够启动这个过程 – whitelionV 2012-02-04 22:09:49
1)你是什么意思的C运行时? 2)你的意思是如果我写一个C程序完全在我的操作系统中执行....我不能在不同的操作系统上运行它,因为不同的操作系统有不同的入口点? – Vikram 2012-02-04 22:12:44
最简单的答案是:程序的用户在启动应用程序时调用主函数。你有没有使用过命令终端?如果你有你会知道你可以传递参数给一个命令。例如:
$ grep word myfile
什么在幕后事情是终端看什么键入然后调用grep程序的main
方法,并传递[word, myfile]
作为第二个参数,以这种方法。这是一个简化,但我希望它有帮助。
如果你编写一个没有main的程序,你怎么想它的工作原理? – 2012-02-04 21:59:53