&引用;一元'的类型参数无效*';C

&引用;一元'的类型参数无效*';C,c,unions,C,Unions,我对编程比较陌生,即使做了彻底的研究,我也无法解决这个问题 我想通过一个对象[定义为变量类型union]检查我是否可以与用户输入的新对象进行比较,因为输入的对象是否在该特定集合中,但总是会出现两个错误: “一元'*'的类型参数无效(具有'Object')” 以下是结构定义以及对象的并集: typedef struct object { union { char c; char t[OSIZE]; unsigned long int h[OSIZE]; un

我对编程比较陌生,即使做了彻底的研究,我也无法解决这个问题

我想通过一个对象[定义为变量类型
union
]检查我是否可以与用户输入的新对象进行比较,因为输入的对象是否在该特定集合中,但总是会出现两个错误: “一元'*'的类型参数无效(具有'Object')”

以下是结构定义以及对象的并集:

typedef struct object
{
  union
  {
    char c;
    char t[OSIZE];
    unsigned long int h[OSIZE];
    unsigned int i;
    float f;
    long double j[OSIZE];
    int type;
  } TYPE;
} Object;

typedef struct list1
{
  Object item;
  struct list1*next;
} LIST;

typedef LIST*SET;

scan->item
是一个对象,而不是指针。所以你不能取消引用它。

你想用
*scan->item
做什么?请注意,它被解析为
*(扫描->项目)
,您可能是指
(*scan)->项目
?或者只是
scan->item
?或者…?这也可能是您的问题。尝试在那里添加一个空格。请注意,
while(S!=NULL)
应该是
while(scan!=NULL)
,但是您应该测试
p!=0
或设置
p=1后使用
break
因为一旦知道答案,就没有必要扫描集合的其余部分。甚至
返回true
如果找到匹配项,则简单的
返回falsep
。(不要完全相信单一入学/单一退学学校——这种情况下提前返校是完全可以理解的,而且比其他学校简单得多。)基本上,我想做的只是“扫描”扫描中项目的内容,它指向原始设置,以检查两个项目是否匹配,至少这是我的目标,所以我试过(*扫描)还是不起作用。有什么想法吗?
typedef struct object
{
  union
  {
    char c;
    char t[OSIZE];
    unsigned long int h[OSIZE];
    unsigned int i;
    float f;
    long double j[OSIZE];
    int type;
  } TYPE;
} Object;

typedef struct list1
{
  Object item;
  struct list1*next;
} LIST;

typedef LIST*SET;
if (*scan->item == items)