Проблема с компиляцией кода C - PullRequest
1 голос
/ 03 марта 2011

Я использую 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);
     } 
  }

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

  • grp.h
  • 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 не имеет смысла в данный момент, я хочу изменить это, когда компиляция работает.

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

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

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

0 голосов
/ 03 марта 2011

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

0 голосов
/ 03 марта 2011

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

...