枚举的非法隐式转换?我究竟做错了什么?

时间:2013-01-07 11:56:06

标签: c types enums

我收到错误消息 错误:从'@ enum $ 1main_c **'到'@ enum $ 1main_c *'的非法隐式转换

//example.h
typedef enum {eg_1, eg_2} valType;


//main.c
#include "example.h"
void main(void)
{
 valType *testVal;
while(1)
 {
 read(x,y,*testval);
 }
}
你可以告诉我我做错了什么吗?提前谢谢

3 个答案:

答案 0 :(得分:0)

如果这是来自read的{​​{1}},则其最后一个参数必须是unistd.h,而不是size_t

答案 1 :(得分:0)

您可以发布read()函数的源代码吗?可能它需要testVal作为指针,但你传递的是值。

答案 2 :(得分:0)

没有任何进一步的信息,我可以说是testVal有一个未定义的值,它是一个未初始化的指针。我假设读取将尝试在testVal中放置一些东西,所以现在,将代码更改为:

//example.h
typedef enum {eg_1, eg_2} valType;


//main.c
#include "example.h"
void main(void)
{
 valType testVal;
while(1)
 {
 read(x,y, &testval);
 }
}

让我们知道它是怎么回事。