【发布时间】:2015-12-09 00:53:01
【问题描述】:
[VS10] 目的是将驱动器文字字符串复制到 *.dst 中
TCHAR *driveIDBase;
...
wcscpy_s (driveIDBase, MAX_PATH-3, L"\\\\?\\C:\\*");
这会产生错误
IntelliSense:重载函数“wcscpy_s”的实例不匹配 参数列表
请注意,ANSI 版本运行良好:
strcpy_s (driveIDBase, MAX_PATH-3, "C:\\*");
假设我们尝试明显的解决方法:
strcpy_s (driveIDBase, MAX_PATH-3, "\\?\C:\");
我们可以说演员 (wchar_t *) driveIDBase 可靠吗?也就是说,WIN32_FIND_DATAW 会将该字符串解释为“C:\”?
MSDN 的这句话又是什么意思?
“\\?\”前缀关闭路径字符串的自动扩展,
【问题讨论】:
-
对我来说很好(VS2015)。
TCHAR取决于项目中的字符集选择。是否设置为 Unicode?span> -
@Bo 这是 MBCS。嘿,更改为 Unicode 会导致代码中出现大量“不兼容”类型错误——我想看看。在这里有 2015 年的 ISO。值得一试吗?
-
VS2015 不会在这里改变任何东西。
TCHAR是char或wchar_t,具体取决于该设置。如果您编写新软件,您可以只使用 wchar_t 并跳过 TCHAR 东西。这是为了简化为 Windows 95 和 Windows NT 编写代码而引入的。我们现在不常做的事情。