使用标准C++入口:
int main(int argc, char *argv[])
{
// stuff
}
argv
是如何被填充的?编译器无法知道要为数组分配多大的空间,我认为操作系统负责将附加参数传递给程序,但是它们是如何传递到 main
的呢?指针数组是在哪里初始化的?是编译器创建并注入到程序启动序列中的函数吗?这是我一直以来都理所当然的事情,在今天的一个问题上,我并不确定额外的参数最终是如何被
main
接收的,更不用说像在 CPython 中作为 sys.argv
传递给任何程序了。奖励问题:操作系统如何处理命令行参数?显然 CLI(或 shell)知道如何解析字符串序列,但是额外的参数是如何“输送到”可执行文件中的?编译器是否添加了某些功能来从
stdin
(缓冲区)读取并相应地解析参数,然后再传递给 main
?
main
的问题。我猜测操作系统运行可执行文件,将程序输出到内存中,然后可以访问main
以传递数组。 - user8087992main()
之前完成的。 - Jeremy Friesnerargc
在那里,但我仍然很好奇它是如何到达main
的。 - user8087992