我正在使用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);
}
}
我包含以下头文件:
(从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返回没有意义,我想在编译时改变它。
答案 0 :(得分:2)
你不能把glibc上的几个头文件带到windows上的mingw。这些头文件不是自包含的,它们需要很多其他头文件,甚至可能需要安装在系统上(不仅仅是在glibc源文件夹中提到..)
除此之外,glibc不是为windows制作的 - 这些头文件专门为glibc而设计,而win32还没有getgrnam()函数。 (你需要cygwin,它有自己的头文件)
答案 1 :(得分:0)
最低的for循环中有一个缺失的大括号,但可能只是一个发布错误?
答案 2 :(得分:0)
我怀疑这是问题的根源,但看起来你的问题有一个结束括号},但缺少并打开一个。