Должен ли scandir() быть распознан в dirent.h MinGW-W64?

#c #gcc #mingw-w64

#c #gcc #mingw-w64

Вопрос:

Когда я пытаюсь скомпилировать с использованием GCC (MinGW-W64) с dirent.h заголовочным файлом, scandir не распознается как функция. Должно ли это быть? Я пытаюсь запустить пример кода GNU GCC для scandir.

Я также не уверен, какая версия является последней. В некоторых сообщениях указывается GCC 10 или 10.1, но неясно, какая версия MinGW-W64. GCC -- version выдает:

gcc (x86_64-posiz-seh-rev0, Built by MinGW-W64 project) 8.1.0.

Это самая последняя версия?

Все остальное, что я использовал до сих пор, похоже, работает нормально. Я смог без проблем скомпилировать свой код с файлом объединения SQLite3 и выполнить SQL. Кроме того, readdir распознается, компилируется и выполняется, как и ожидалось.

Это пример кода. alphasort также не распознается.

 #include <stdio.h>
#include <dirent.h>


static int
one (const struct dirent *unused)
{
  return 1;
}

int
main (void)
{
  struct dirent **eps;
  int n;

  n = scandir ("./", amp;eps, one, alphasort);
  if (n >= 0)
    {
      int cnt;
      for (cnt = 0; cnt < n;   cnt)
        puts (eps[cnt]->d_name);
    }
  else
    perror ("Couldn't open the directory");

  return 0;
}
 

Спасибо.

Комментарии:

1. Вы читали Feature Test Macro Requirements и man feature_test_macros ?

2. Нет. Откуда?

3. man feature_test_macros и man scandir . Из справочных страниц — лучшая документация. Также может быть, что MinGW (или что у вас там есть) просто не реализует эту функцию.

4. Спасибо. Я думал, вы имели в виду документацию MinGW-W64. Я просмотрю это и посмотрю, является ли это проблемой.

5. Это для glibc в Linux. Вероятно, не применимо к mingw.