1

このコードをコンパイルするために、MinGW で Dev-C++ 4.9.9.2 を使用しています。

  /* 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 return は現時点では意味がありません。コンパイル時に変更したいと思います。

4

3 に答える 3

2

Windowsのglibcからmingwにいくつかのヘッダーファイルを持ち込むことはできません。これらのヘッダーファイルは自己完結型ではなく、他の多くのヘッダーファイルが必要であり、おそらくシステムにインストールする必要があるかもしれません(glibcソースフォルダーで参照されるだけではありません)。

その上、glibcはWindows用に作成されていません-これらのヘッダーファイルはglibc専用に作成されており、win32にはgetgrnam()関数がありません。(独自のヘッダーファイルを持つcygwinが必要です)

于 2011-03-03T10:07:39.413 に答える
0

最も低いforループに中括弧がありませんが、おそらくそれは単なる投稿エラーですか?

于 2011-03-03T10:07:09.873 に答える
0

これが問題の原因であるとは思えませんが、あなたのforには閉じ括弧}があるように見えますが、閉じ括弧がなく、開いています。

于 2011-03-03T10:08:19.973 に答える