【发布时间】:2015-03-24 19:53:01
【问题描述】:
这两者之间有什么区别(如果有的话)? MSDN 很不清楚。
听起来它们是等价的: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197%28v=vs.85%29.aspx
但在这里听起来 _pgmptr 可能并不总是给我一个完整的路径,但它并没有真正解释在什么情况下。 https://msdn.microsoft.com/en-us/library/tza1y5f7.aspx
_pgmptr 对我来说似乎更有吸引力,因为我不必用它玩缓冲区大小的猜谜游戏。
【问题讨论】:
-
_pgmptr, _wpgmptr: "当程序不是从命令行运行时,_pgmptr 可能会被初始化为程序名称(文件的基本名称没有文件扩展名)或文件名、相对路径或完整路径。” 这不是明确命名情况吗?
-
不,它没有。 “可能”实际上并不明确。
-
就文档而言,没有比这更明确的了:当程序不是从命令行运行时,
_wpgmptr可能不包含完整路径。如果您不关心合同,而是希望针对特定实现进行开发,则可以直接阅读 CRT 源代码。 -
@BigSandwich MSDN 文档通常是矛盾的 :)
-
@BigSandwich:请注意,您不需要缓冲区即可使用
_get_pgmptr,因此这应该是您的首选方法。 (它不会将字符串复制到您提供的缓冲区中,而是将指向字符串的指针复制到您提供的指针中。)