【发布时间】:2014-01-13 10:54:11
【问题描述】:
我有一个头文件(我们称之为 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;
}
我想将指向结构 (PBOJ) 的指针作为参数发送给期望获得指向 void 类型 (pNode) 的指针的函数 (比如说 SampleFunction);那我该怎么做呢?
【问题讨论】:
-
您是否尝试将指针传递给函数?还有
pNode != PNode -
void *的转换在 C 中是隐式的;你不必做任何特别的事情。 -
也就是说,在 typedef 后面隐藏指针通常被认为是不好的做法,因为它掩盖了这里发生的事情。
-
@self 我的意思是写 pNode,PNode 只是一个错字。我还没有尝试过(通过 pobj 而不进行强制转换),我还没有完成我的代码。所以你们说我可以简单地做:SampleFunction (pobj) (当 pobj 是指向结构的指针时),没有强制转换或任何东西?
-
@user2750466 是的。 C 标准保证任何指针都可以转换为空指针或从空指针转换。你可以通过
char *********并且不需要演员表。当然,我希望这个函数能够记录一些关于它期望什么以及它将做什么的信息。除此之外的任何行为都是未指定的行为,当然应该避免。
标签: c pointers struct void-pointers