_pgmptr发生了什么?

4
我一直使用_pgmptr,它是Windows提供的char*变量,可以给出可执行文件的完整路径。然而,最近更新了MinGW后,它似乎被定义为NULL。有没有其他方法可以获取完整的可执行文件路径,包括名称或不包括名称(比如只返回C:\而不是C:\program.exe)?
无论是平台无关的方式还是针对Windows的方式都可以,只要它是可靠的。

你可以使用 argv[0] (可能需要将其复制到全局变量中) - Mats Petersson
问题就在这里... argv[0] 的值取决于程序是如何从命令行还是资源管理器启动的,可能会有其他值。 - rsethc
尽管在手动调用exec或类似函数时可以将完全不同的内容放入argv[0]中,但我认为它适用于通过资源管理器启动和命令行启动的应用程序。 - Mats Petersson
@MatsPetersson:不,如果你从命令行启动程序,argv[0] 将只是在命令行中输入的任何内容。通常这意味着只有可执行文件的名称,没有路径,也没有扩展名。 - Harry Johnston
1个回答

6

该函数的文档甚至提到了 _pgmptr,尽管我不知道为什么它不可用。 - Joey
2
是的,从您提供的页面中,“全局变量_pgmptr会自动初始化为可执行文件的完整路径,并可用于检索可执行文件的完整路径名。”在“注释”部分中。http://msdn.microsoft.com/en-us/library/tza1y5f7.aspx说它已被弃用。 - rsethc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接