【发布时间】:2017-09-06 02:43:11
【问题描述】:
我正在尝试详细了解命令行参数的工作原理。
这就是我认为会发生的事情:
当你在 C 中编译包含
main()函数的源代码时,生成的目标文件将与 CRT 链接,程序的入口点将是_start()函数(存在在 CRT 中),_start()将调用main()。现在,当您运行程序并传递一些命令行参数时,命令行参数将传递给
_start()函数,然后_start()将重新传递命令行参数给@987654327 @。
我说的对吗?
【问题讨论】:
-
"... 程序的入口点将是“
main函数。其他任何东西都与您的 C 程序无关。如果您想更深入,这与 C 无关,而仅与您的平台有关。使用Linux,阅读crt和loader的源码,单步执行一个简单的程序。在这里解释所有这些肯定太宽泛了。 -
传递参数数组的指针和参数计数。参数本身由运行时处理。
-
解释命令行的 shell 将解析参数并填充参数数组。然后它通过编译器特定的方法将计数和指针传递给 main(或者将它们放在堆栈上,或者更有可能在调用 main 之前用这些值填充寄存器)。