Что значит [NAME_MAX] (C++)

205
23 сентября 2018, 06:30

Нужно вывести содержимое директории на C++ код уже есть(лентяй нашел готовый),

DIR *dfd; //Открывается поток для чтения из директории
struct dirent *dp; //структура данных в которую будут помещаться  вывод из директории
cout << "Path = ";
char filename[NAME_MAX];
cout << "File = ";
char dir[NAME_MAX];//предмет вопроса
    cin >> dir;
    strcpy(filename, dir);//хз
printf("%s\n\n", filename);
dfd=opendir(filename);//Открытие выбранной директории для получения списка папок и файлов 
while( (dp=readdir(dfd)) != NULL ) // пока в поток поступает информации, она(информация выводится на экран)
        printf("%s\n", dp->d_name);
closedir(dfd);
return 0;

только мне не понятен один фрагмент

char filename[NAME_MAX];

Что это за NAME_MAX и что он делает? Вчера начал изучать C++, поэтому простым языко объясните пжлст. Можете приводит аналогии на C# или Java. И да, код работает как надо!!! Коментарии мои, мог что-то не так понять.

Answer 1

Макрос, равный максимальному размеру пути в вашем окружении. Вернее, обеспечивающий, чтобы после объявления

char filename[NAME_MAX];

массива filename гарантированно хватало для хранения имени любого файла в системе.

READ ALSO
Поиск файла по расширению C++

Поиск файла по расширению C++

Нужно найти файл по расширению в известной директорииДля винды существует такое решение:

177
Утечка памяти (GDI+)

Утечка памяти (GDI+)

Почему происходит утечка памяти?

191
Как добавить флаг -std=c++17 или -std=gnu++17

Как добавить флаг -std=c++17 или -std=gnu++17

Пишу программу на C++ в Linux в среде NetBeansIDEХочу использовать #include <fillesystem>, чтобы ее использовать нужно добавить флаг -std=c++17 или -std=gnu++17

225