在调用堆栈上推送命令行参数(C)?

时间:2013-03-18 15:22:43

标签: command-line parameters callstack

我想知道命令行参数的参数传递是如何工作的?我的装配有点生锈。我知道函数的参数被调用者压入堆栈。命令行参数怎么样?它们如何被推入主函数的堆栈框架?

谢谢

1 个答案:

答案 0 :(得分:0)

在标准C中,main可以至少使用两个参数 - 第一个是命令行参数的数量,第二个是指向它们的指针数组。它们出现在堆栈中的顺序是实现定义的,但C的一个常见约定是将它们从右向左推送,因此后续的args出现在更高的地址。

就原始装配而言,尽管......与大多数与装配有关的东西,它依赖于平台。 Linux为您解析命令行参数并将指针传递给堆栈上的指针。在Windows中,通过调用OS(GetCommandLineAGetCommandLineW)来检索命令行,并自行解析。如果您在Windows应用程序中使用C或C ++,则命令行也是WinMain的参数之一。