Проблема с компиляцией кода C

Я использую Dev-C++ 4.9.9.2 с MinGW для компиляции этого кода:

  /* get the information about the group. */
  struct group* group_info = getgrnam("PLACEHOLDER");
  /* make sure this group actually exists. */

  if (!group_info) {
     printf("group 'PLACEHOLDER' does not exist.\n");
  }
  else 
  { 
     char** p_member;

     printf("Here are the members of group 'PLACEHOLDER':\n");
     for (p_member = group_info->gr_mem; *p_member; p_member++)
        printf("  %s\n", *p_member);
     } 
  }

Я включил следующие заголовочные файлы:

  • гр.ч
  • sys/types.h

(получил их от glibc 2.13 (может быть это неправильно, но друг сказал мне, что это правильный путь))

когда я пытаюсь скомпилировать код, я получаю кучу ошибок в заголовках от glibc, например:

12 C:\glibc-2.9\include\sys\cdefs.h expected constructor, destructor, or type conversion before '(' token 
12 C:\glibc-2.9\include\sys\cdefs.h expected `,' or `;' before '(' token 
4  C:\glibc-2.9\include\grp.h expected constructor, destructor, or type conversion before '(' token   

Редактировать:

Это весь Кодекс

 #include <grp.h> /* defines 'struct group', and getgrnam(). */
 #include <sys/types.h> /* defines 'gid_t', etc.              */

 BOOL getListOfGroupMembers() {

   /* get the information about the "strange" group. */
   struct group* group_info = getgrnam("PLACEHOLDER");
   /* make sure this group actually exists. */
   if (!group_info) {
      printf("group 'PLACEHOLDER' does not exist.\n");
   }
   else 
   {
      char** p_member;

      printf("Here are the members of group 'PLACEHOLDER':\n");
      for (p_member = group_info->gr_mem; *p_member; p_member++)
      {
        printf("  %s\n", *p_member);
      } 
    }

    return 0;

  }

Возврат bool на данный момент не имеет смысла, я хочу изменить это при компиляции.


person Templin    schedule 03.03.2011    source источник
comment
Похоже, у вас что-то не так до включения. Можете ли вы опубликовать эти части?   -  person Tugrul Ates    schedule 03.03.2011


Ответы (3)


Вы не можете просто перенести пару файлов заголовков из glibc в mingw для Windows. Эти заголовочные файлы не являются автономными, им нужно много других заголовочных файлов, и, возможно, их даже нужно будет установить в системе (а не просто ссылаться на них в исходных папках glibc..)

Кроме того, glibc не предназначен для Windows — эти заголовочные файлы созданы специально для glibc, а в win32 в любом случае нет функции getgrnam(). (Вам понадобится cygwin, у которого есть собственные файлы заголовков)

person nos    schedule 03.03.2011
comment
Знаете ли вы, есть ли способ получить список всех пользователей в группе (в c) без использования getgrnam()? - person Templin; 03.03.2011

В самом нижнем цикле for отсутствует фигурная скобка, но, может быть, это просто ошибка публикации?

person fnokke    schedule 03.03.2011

Я сомневаюсь, что это источник проблемы, но похоже, что у вас есть закрывающая скобка }, но отсутствует и открывающая.

person Raveline    schedule 03.03.2011