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

Command line 在调用堆栈上推送命令行参数(C)?,command-line,parameters,callstack,Command Line,Parameters,Callstack,我想知道命令行参数的参数传递是如何工作的?我的总成有点生锈了。我知道函数的参数是由调用方推送到堆栈上的。那么命令行参数呢?它们是如何被推到主函数的堆栈框架上的 感谢在标准C中,main至少可以接受两个参数——第一个是命令行参数的数量,第二个是指向它们的指针数组。它们在堆栈上的显示顺序是由实现定义的,但C的一个常见约定是从右向左推送它们,因此后续参数显示在更高的地址 不过,就原始程序集而言……就像大多数与程序集相关的东西一样,它依赖于平台。Linux为您解析命令行参数,并在堆栈上传递指向它们的指针

我想知道命令行参数的参数传递是如何工作的?我的总成有点生锈了。我知道函数的参数是由调用方推送到堆栈上的。那么命令行参数呢?它们是如何被推到主函数的堆栈框架上的


感谢在标准C中,
main
至少可以接受两个参数——第一个是命令行参数的数量,第二个是指向它们的指针数组。它们在堆栈上的显示顺序是由实现定义的,但C的一个常见约定是从右向左推送它们,因此后续参数显示在更高的地址


不过,就原始程序集而言……就像大多数与程序集相关的东西一样,它依赖于平台。Linux为您解析命令行参数,并在堆栈上传递指向它们的指针。在Windows中,通过调用操作系统(
GetCommandLineA
GetCommandLineW
)来检索命令行,并由您自己解析。如果你使用C或C++的Windows应用程序,命令行也是一个ARG,代码< WINMANG/COD>。不过,我确实了解到,通过编写简单函数并通过带有-S标志的g++运行它们,可以产生汇编代码作为输出。没有搜索引擎可以搜索到您所在的位置?谷歌搜索..但只找到关于常规参数的答案,而不是命令行参数..@user1640669:同样,这取决于平台。因为你甚至还没有提到你的特殊环境,我不能肯定地说它有什么作用。Linux显然做到了(至少在某种程度上);Windows没有。其他人,我不知道。在你提供更多信息之前,我只能说这些了P