在非结构或联合的事物中请求成员'_file'[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在非结构或联合的事物中请求成员'_file'[关闭]相关的知识,希望对你有一定的参考价值。
我收到这个错误:
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 ) ;
以上是关于在非结构或联合的事物中请求成员'_file'[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
编译时在非结构或联合中获取成员“indexPath”的错误请求
目标 C:在非结构或联合的情况下请求成员 XXX。 (核心数据)
CoreData 和访问关系的问题:请求非结构或联合中的成员