请求成员不是结构或联合

时间:2014-01-22 22:02:57

标签: c function struct qsort

所以我为qsort定义了函数比较,但是出现以下错误:

1.c: In function ‘compare’:
1.c:235:7: error: request for member ‘count’ in something not a structure or union
1.c:235:17: error: request for member ‘count’ in something not a structure or union
1.c:237:12: error: request for member ‘count’ in something not a structure or union
1.c:237:23: error: request for member ‘count’ in something not a structure or union

有谁知道为什么?我的意思是,这不像我拼错了名字:<

struct word
{
  char wordy[100];
  int count;
};


int compare(const void* a, const void* b)
{

const struct word *ia = (const struct word *)a;
const struct word *ib = (const struct word *)b;

if(*ia.count>*ib.count)
    return 1;
else if(*ia.count==*ib.count)
    return 0;
else
    return -1;
}

2 个答案:

答案 0 :(得分:5)

问题在于iaib是指向const struct word的指针。要访问结构的成员true指向它,我们使用箭头(->)而不是点.

另一件事是确保在声明iaib时拼写结构名称的方式与上面声明的相同。

所以你的代码应该是:

struct word
{
  char wordy[100];
  int count;
};


int compare(const void* a, const void* b)
{

const struct word *ia = (const struct word *)a;
const struct word *ib = (const struct word *)b;

if(ia->count > ib->count)
    return 1;
else if(ia->count == ib->count)
    return 0;
else
    return -1;
}

答案 1 :(得分:2)

然而,你拼错了这个名字:(

您在words函数中引用compare并在其外部定义word

[编辑]
你说it's defined as a global struct。哪里?您在此处复制的来源没有words的可发现定义 [/编辑]

由于您已根据原始表单对帖子进行了编辑,因此您的问题现已发布为rullof - 您正在使用->访问.个项目