以非结构或联合的形式请求成员“_file”
Request for member '_file' in something not a structure or union
我收到这个错误:
somedir/somefile.c: In function 'somefunc':
somedir/somefile.c:433:33: error: request for member '_file' in something not a
structure or union
ReturnValue->Val->Integer = _fileno(Param[0]->Val->Pointer);
^
尝试编译下一段代码时:
void somefunc(struct p *P, struct Value *ReturnValue, struct Value **Param, int n)
{
ReturnValue->Val->Integer = _fileno(Param[0]->Val->Pointer);
}
ReturnValue
是一个指向 struct Value
的指针,还有一个指向 union
的指针,里面有 int Integer
union SomeValue
{
int Integer;
void *Pointer;
}
struct Value
{
union SomeValue *Val;
}
Param
也类似。我的意思是,一切似乎都是正确的,因为我还有另一个类似的功能,而且我没有任何错误,只有这个。怎么了?与_fileno
函数有关吗?当我将 _fileno
更改为 fileno
.
时,也会发生同样的事情
_filno
出现在这种情况下被定义为一个宏;当宏展开时,会尝试取消引用指针参数并访问 _file
成员,例如 arg->_file
。但是,这将失败,因为您不能引用 void*
.
指针应为 FILE*
类型或从有效的 FILE*
对象分配,然后在传递给 _fileno()
时进行转换:
ReturnValue->Val->Integer = _fileno( (FILE*)Param[0]->Val->Pointer ) ;
我收到这个错误:
somedir/somefile.c: In function 'somefunc':
somedir/somefile.c:433:33: error: request for member '_file' in something not a
structure or union
ReturnValue->Val->Integer = _fileno(Param[0]->Val->Pointer);
^
尝试编译下一段代码时:
void somefunc(struct p *P, struct Value *ReturnValue, struct Value **Param, int n)
{
ReturnValue->Val->Integer = _fileno(Param[0]->Val->Pointer);
}
ReturnValue
是一个指向 struct Value
的指针,还有一个指向 union
的指针,里面有 int Integer
union SomeValue
{
int Integer;
void *Pointer;
}
struct Value
{
union SomeValue *Val;
}
Param
也类似。我的意思是,一切似乎都是正确的,因为我还有另一个类似的功能,而且我没有任何错误,只有这个。怎么了?与_fileno
函数有关吗?当我将 _fileno
更改为 fileno
.
_filno
出现在这种情况下被定义为一个宏;当宏展开时,会尝试取消引用指针参数并访问 _file
成员,例如 arg->_file
。但是,这将失败,因为您不能引用 void*
.
指针应为 FILE*
类型或从有效的 FILE*
对象分配,然后在传递给 _fileno()
时进行转换:
ReturnValue->Val->Integer = _fileno( (FILE*)Param[0]->Val->Pointer ) ;