什么将命令行参数解析为 Windows 上的 args[]?
What parses command line args into args[] on Windows?
在Windows上,CreateProcesswin32函数用于创建新进程。此函数的签名采用指向 "command line" lpCommandLine
的指针,因此命令行作为单个字符串传递。
我熟悉的每种语言(C、C++、C#、Java)都允许 main
接受字符串数组的函数。因此,在 CreateProcess 和 main
之间的某处,一定有一些东西正在解析 lpCommandLine
并将其转换为 args[]
。
此解析代码位于何处?它是 OS 的一部分(在 CreateProcess
内),还是每种语言 "runtime" 的一部分(在调用 main
之前在新进程中运行的代码)?
链接到您的程序中的运行时启动代码运行。例如,对于 C,它是 crt0.c.
创建的进程在某个声明的入口点以用户模式开始执行,该入口点不是 main
。调用 main
.
的是 C 运行时
当我还是一名 Windows C 程序员时,C 运行时源代码包含在 SDK 中。
在Windows上,CreateProcesswin32函数用于创建新进程。此函数的签名采用指向 "command line" lpCommandLine
的指针,因此命令行作为单个字符串传递。
我熟悉的每种语言(C、C++、C#、Java)都允许 main
接受字符串数组的函数。因此,在 CreateProcess 和 main
之间的某处,一定有一些东西正在解析 lpCommandLine
并将其转换为 args[]
。
此解析代码位于何处?它是 OS 的一部分(在 CreateProcess
内),还是每种语言 "runtime" 的一部分(在调用 main
之前在新进程中运行的代码)?
链接到您的程序中的运行时启动代码运行。例如,对于 C,它是 crt0.c.
创建的进程在某个声明的入口点以用户模式开始执行,该入口点不是 main
。调用 main
.
当我还是一名 Windows C 程序员时,C 运行时源代码包含在 SDK 中。