Я пытаюсь определить типы файлов для записей каталога (Windows Unix и т. Д.).
В файле sys / stat.h высокоуровневый фрагмент слова st_mode имеет кодированные значения:
#define S_IFDIR 0x4000 /* directory */
#define S_IFIFO 0x1000 /* FIFO special */
#define S_IFCHR 0x2000 /* character special */
#define S_IFBLK 0x3000 /* block special */
#define S_IFREG 0x8000 /* or just 0x0000, regular */
Из комментария кажется, что nybble может быть 0 или 8 для представления «обычного файла».
Так что возникает вопрос: при каких обстоятельствах это 0, а не 8?Если бы я определил эти коды, я бы зарезервировал 0, чтобы указать неизвестный / неопределенный / недействительный / не-файл или что-то в этом роде.
В действительности макрос S_ISREG:
#define S_ISREG(m) ((m) & S_IFREG)
Мне кажется, это указывает на то, что обычный файл всегда должен иметь код 8 (а 0 будет аббревиатурой?).
Будет ли правильным предположением интерпретировать 0 как неизвестный илиневерный файл и игнорировать комментарий 'или просто 0x0000' и всегда ожидать, что 8 будет использоваться для всех обычных файлов?