Ste*_*pii 1 c struct pointers unions
我收到这个错误:
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);
^
Run Code Online (Sandbox Code Playgroud)
在尝试编译下一个代码时:
void somefunc(struct p *P, struct Value *ReturnValue, struct Value **Param, int n)
{
ReturnValue->Val->Integer = _fileno(Param[0]->Val->Pointer);
}
Run Code Online (Sandbox Code Playgroud)
ReturnValue
是一个指向,struct Value
并有一个指向union
内部的指针int Integer
union SomeValue
{
int Integer;
void *Pointer;
}
struct Value
{
union SomeValue *Val;
}
Run Code Online (Sandbox Code Playgroud)
Param
也很相似.我的意思是,一切似乎都是正确的,因为我还有另外一个像这样的功能,我没有任何错误,只有这个.怎么了?它与_fileno
功能有关吗?当我换_fileno
到时,会发生同样的事情fileno
.
_filno
在这种情况下出现被定义为宏; 当扩展宏时,尝试取消引用指针参数并访问该_file
成员arg->_file
.然而,这将失败,因为你不能尊重void*
.
指针应该是类型FILE*
或从有效FILE*
对象分配,然后传递给_fileno()
:
ReturnValue->Val->Integer = _fileno( (FILE*)Param[0]->Val->Pointer ) ;
Run Code Online (Sandbox Code Playgroud)