我最近和一位朋友谈过,他告诉我C ++ Metro应用程序中不允许使用CopyFile和CopyFileEx(这似乎是正确的)。为什么是这样?为什么他们提出了一个名为CopyFile2
的奇怪替代品所有这些都复制了一个文件,那么为什么要禁止部分已建立的API提出新的功能呢?
答案 0 :(得分:5)
使用metro API的一般立场是“如果有Ex功能或某些东西取代它,你必须打电话给新的。”对于8位字符串(由于历史原因而错误命名为“ANSI编码”)版本的函数也是如此。除了其他好处之外,这还可以降低Windows RT的代码大小。
让我们分析一下CopyFile2
...例如,options参数现在是一个大小为第一个成员的结构。我认为这对于未来的可扩展性比CopyFileEx
所采用的方法更好。这允许Microsoft在保持与旧调用者的二进制兼容性的同时添加新选项。 (Microsoft可以扩展结构的长度,然后检查dwSize
以确定您拥有的结构的版本,并相应地调整其行为。)仅这一点使它比CopyFileEx
更具未来性证明函数签名更改(因此是一个全新的函数)来添加单个选项。 (我没有仔细阅读,也许他们已经已经在CopyFile2
添加了一个选项......)