3

私は最近、C++ Metro アプリケーションではCopyFileCopyFileExが許可されていないという友人と話していました(これは正しいようです)。どうしてこれなの?そして、なぜ彼らはCopyFile2という名前の奇妙な代替品を提案したのですか?

それらのすべてがファイルをコピーするのに、確立された API の一部を禁止して、新しい機能を明らかにするのはなぜでしょうか?

4

1 に答える 1

6
  1. メトロ API の一般的なスタンスは、「Ex 関数またはそれを置き換えるものがある場合は、新しい関数を呼び出さなければならない」というものでした。関数の 8 ビット文字列 (歴史的な理由から "ANSI エンコーディング" という誤った名前) バージョンについても同じことが言えます。他の利点の中でも特に、これにより Windows RT のコード サイズが小さく抑えられます。

  2. 分析的に見てみましょうCopyFile2... 1 つは、options パラメーターが、最初のメンバーとしてサイズを持つ構造体になったことです。将来の拡張性を考えると、これはCopyFileEx. これにより、Microsoft は古い呼び出し元とのバイナリ互換性を維持しながら、新しいオプションを追加できます。(Microsoft は、構造体の長さを拡張し、構造体のdwSizeバージョンを確認して、それに応じて動作を適応させることができます。) これだけでも、関数シグネチャの変更が必要になるよりも将来性が高くなりCopyFileExます (したがって、まったく新しい関数) をクリックして、単一のオプションを追加します。(私は注意深く読んでいません。おそらく、彼らすでにオプションを追加していたのかもしれませんCopyFile2...)

于 2012-08-28T00:35:45.537 に答える