我读了几篇有关不同Windows C入门船的文章,Wmain和Winmain。

因此,如果我是正确的,则将它们添加到Windows OS的C语言编译器中。但是,如何实施?

例如,Wmain将Unicode作为ARGV [],但是将这些参数发送到程序的OS,因此.exe文件条目中是否有任何特殊字段,该字段向Windows说,将Arguemnts作为Unicode传递?谢谢。

有帮助吗?

解决方案

Windows的现代版本内部使用UTF-16。因此,当您启动可执行文件时,所有命令行参数可能会从发作中以UTF-16传递,并且链接到启动应用程序的运行时库将通过毫发无损(如果使用使用) wmain)或将它们自动转换为本地编码(如果使用 main)。 (具体而言,这将由 wmainCRTStartup/mainCRTStartup 这是控制台Windows应用程序使用的实际入口点。)

其他提示

首先:pedantic咆哮:wmain当然不会得到Unicode的争论。 Unicode是独立定义的 任何特定的编码。 Wmain在一个猜测的UTF-16编码UTF-16的16位字符中获得参数。我刚刚检查了Microsoft的文档 Wmain 而且,从中的链接,很明显,微软在编写它时对Unicode是什么都不知道。

无论如何,程序的输入点由链接器定义。 AC程序始终具有一定数量的序言代码,该代码在MAIN/WMAIN/WINMAIN/WWINMAIN之前运行。如果使用了宽阔的主版本,则序言代码将环境中的字符从其所处的任何字符转换为宽字符版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top