正如标题所说,它们是什么,有什么区别?
一些例子:
dmain
:
void dmain(void* mbd, unsigned int magic)
kmain
:
void kmain( void* mbd, unsigned int magic )
P.S。我在这里发现了类似的帖子,但它是关于wmain
:
What is the difference between wmain and main?
另外_tmain
:
What is the difference between _tmain() and main() in C++?
__
他们采取相同的论点,但有区别吗?任何链接到一些信息,所以我可以学习赞赏,谷歌产生了奇怪的结果......
此外,还有官方类似C的“男人”页面吗?
答案 0 :(得分:1)
您似乎指的是this tutorial on OSDev.org。
如果您注意到,这是而不是标准C程序,其中main()
为其入口点。实际上,该页面显示了两个入口点:一个用汇编程序写入,以便GRUB找到&负载,以及设置&加载第二个kmain()
,用C语言编写。编写者使用名称kmain
表示“内核主”;大概是dmain
是司机的入口点。将代表“司机主”。
C区分“独立”和“托管”实现。托管是你可能更熟悉的东西;标准C库可用,所有程序都从main
函数开始。
OS内核(通常)是独立环境的好例子。例如,C库可能不可用(除了stddef.h
和stdarg.h
之类的某些标题;有关详细信息,请参阅标准)。此外,入口点不再由标准定义。 OSDev.org教程通过使用不同的名称明确定义其入口点,特别指出了这一事实。
您可以运行教程将kmain
重命名为main
,但请注意它仍然是void main(void*, unsigned int)
,不是 int main(int, char**)
;事实上,这种混淆可能是作家选择使用不同名称的部分原因。但这只是他们选择的惯例,而不是任何标准化的。