1

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365740%28v=vs.85%29.aspx

cFileName
ファイルの名前。

の値はMAX_PATHとほぼ同じ_MAX_FNAMEですが、この場合、最初の値を使用すると誤解を招きます。とにかく、彼らが名前付きのフルパスを意味しているなら、そうすべきcFileName[MAX_PATH+_MAX_FNAME];ですか? を使用する目的は何MAX_PATHですか?

4

2 に答える 2

5

この定数は、ファイル名と拡張子を含むパス全体MAX_PATHの最大長を表します。相対パス、完全修飾パス、または単なるファイル名であるかどうかは関係ありません。それらはすべて同じ最大長です。

したがって、MAX_PATH + _MAX_FNAMEパスに許可されている最大長を超えるため、表示されることはありません。

この記事では、Win32 のパスについて知りたいことのほとんどすべてを見つけることができます。一部の API (これらは通常、ドキュメントで明示的に呼び出されます) は、特別な接頭辞で示される長いパス名を受け入れますが、これらは の制限を受けないことに注意してくださいMAX_PATH

この場合、関数シグネチャは正しいです。ただし、ドキュメントに付随するサンプル コードのスニペットが MSDN に掲載されている場合があります。見つけたサンプル コードを適用しようとするときは、常に十分な量の常識を使用する価値があります。

于 2012-07-31T17:44:12.120 に答える
2

ここは間違いありません。長さに制限がある Windows API では、名前の最大長は (通常)MAX_PATHです。名前が完全に指定された絶対パス、相対パス、または単なるファイル名であるかどうかは関係ありません。長さの制限はMAX_PATH.

基盤となるファイル システムの制限が異なる可能性があります。ネイティブ ファイル システムの制限が 260 未満である可能性は十分にありえます。しかし、API が 260 文字の制限を宣言している場合、それはその特定の API を使用するときの制限です。

MSDN ライブラリが正しくないと思われる場合は、簡単に確認できます。Windows ヘッダー ファイルの定義を見て、MSDN ライブラリにある定義と比較してください。MSDN ライブラリが常に正確であることがわかります。

于 2012-07-31T17:40:15.870 に答える