【发布时间】:2018-10-05 12:34:42
【问题描述】:
C 主方法有签名
int main(int argc, char** argv) {
}
它将获得一个命令行参数数组。但是当尝试启动应用程序时,例如使用CreateProcess 或ShellExecute,它们只接受2 个参数,一个用于启动应用程序,一个用于参数。 为什么不将参数也指定为数组? 为什么每个使用其他应用程序的应用程序都必须处理命令行参数的转义,例如,在调用具有 2 个可能包含的任意文件名的比较工具时空格还是引号?
【问题讨论】:
-
您命名的示例函数使用 shell 执行。看看
execv()和朋友。 -
不妨问问为什么太阳从东方升起。
-
为什么不将参数也指定为数组? 但为什么必须?命令行作为单个字符串最原生的选项。 exe的入口点有
ULONG __stdcall ep(PEB*)签名。main不是入口点 -
您将 C 标准与 Windows API 进行比较。这些没有可比性。这个问题有点不合逻辑。