我想知道命令行参数的参数传递是如何工作的?我的组件有点生锈。我知道一个函数的参数是由它的调用者推入堆栈的。命令行参数呢?它们是如何被推入主函数的堆栈框架的?
谢谢
我想知道命令行参数的参数传递是如何工作的?我的组件有点生锈。我知道一个函数的参数是由它的调用者推入堆栈的。命令行参数呢?它们是如何被推入主函数的堆栈框架的?
谢谢
在标准 C 中,main
至少可以采用两个参数——第一个是命令行参数的数量,第二个是指向它们的指针数组。它们出现在堆栈上的顺序是实现定义的,但 C 的一个常见约定是将它们从右向左推送,因此后续 args 出现在更高的地址。
就原始组装而言,尽管......就像大多数与组装相关的东西一样,它依赖于平台。Linux 会为您解析命令行参数,并在堆栈上传递指向它们的指针。在 Windows 中,命令行是通过调用操作系统(GetCommandLineA
或GetCommandLineW
)来检索的,然后您自己解析它。如果您在 Windows 应用程序中使用 C 或 C++,则命令行也是WinMain
.