我有一个头文件,(我们称之为gen.h),其中包含以下行:
typedef void* pNode;
SampleFunction(PNode node); /* just a function for example*/
现在,假设我有另一个源文件(part.c),它包含以下结构:
typdef struct _OBJ* POBJ;
typdef struct _OBJ
{
double xi;
double xf;
double yi;
double yf;
int key;
}
我想发送一个指向struct(PBOJ)的指针作为函数的参数(比如说SampleFunction),它希望得到一个指向void类型的指针(pNode);那我该怎么做?
答案 0 :(得分:0)
下面的代码只是一个简单的示例,所以我没有写入init,delete等等。
struct _OBJ
{
double xi;
double xf;
double yi;
double yf;
int key;
};
typedef struct _OBJ* POBJ;
typedef void* pNode;
void SampleFunction(pNode node)
{
//null check
if(node == NULL)
{
//error
}
//Do Something
// ...
}; /* just a function for example*/
int main()
{
POBJ obj = new _OBJ;
SampleFunction((pNode)obj);
delete obj;
}
答案 1 :(得分:0)
您只需将其PNode
转换为void*
,因为&
可以安全地指向任何其他类型。
由于PBOJ是指向_OBJ的指针,因此您可以在没有POBJ Ptr;
SampleFunction((PNode)Ptr);
// or SampleFunction((void *)Ptr);
运算符的情况下直接转换它
{{1}}