Привет всем!
В файле windef.h константа MAX_PATH определена так:
#define MAX_PATH 260
Вопрос: для всех ли файловых систем это выполняется? MAX_PATH зависит от файловой системы или от ОС?
Y>В файле windef.h константа MAX_PATH определена так:
Y>Y>#define MAX_PATH 260
Y>
Y>Вопрос: для всех ли файловых систем это выполняется? MAX_PATH зависит от файловой системы или от ОС?
в 2х словах: это все пережиток DOS и плавного портирования FAT->FAT32 где есть 256 байт на длину имени файла. Некоторые ФС вроде НТФС не имеют столь жесткого ограничения, конкретно НТФС позволяет иметь UNICODE имена до 32К символов
но мой experience таков, что например FAR и даже explorer не поддерживают пути длиннее этой самой MAX_PATH! даже на NTFS!
поэтому использование этой константы в своих программах и тем более в драйверах при работе с именами файлов — это NO, даже NO-NO
В приложениях MFC используйте CString
При использовании Win32 API читайте ремарки в MSDN — есть ф-ии внутри написаны с использованием этой константы внутри и посему их использование скажем на том же NTFS даст сбой при реально длинном имени директории и\или файла.
Кстати, длинные имена вполне можно получить, используя NTFS линки на длинные имена директорий — в этом случае тоже надо быть аккуратным
... << RSDN@Home 1.0 beta 6a >>