2011-03-03 103 views
1

我使用开发 - C++ 4.9.9.2使用MinGW编译的代码:问题的编译C代码

/* 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; 

    } 

布尔返回目前没有意义,我想在编译作品时改变它。

+0

看起来你有什么错** **之前的包括。你可以发布这些部分? – 2011-03-03 10:02:48

回答

0

有最低for循环,但也许它只是一个发布错误缺少支柱?

2

你不能只是把过了几个头文件从glibc的到MinGW的Windows上。这些头文件不是独立包含的,它们需要很多其他头文件,甚至可能需要安装在系统上(不仅仅是指glibc源文件夹中)。

除此之外,glibc isn不适用于windows - 这些头文件是专为glibc制作的,而win32无论如何都没有getgrnam()函数。 (你会需要Cygwin的,它有自己的头文件)

+0

您是否知道是否有方法可以在不使用getgrnam()的情况下获取组(c)中的所有用户列表? – Templin 2011-03-03 10:21:45

0

我怀疑这是问题的根源,但它看起来像你换了一个右括号},但是缺乏开放一个。