我得到了下面的代码:的typedef不透明的指针,不透明的指针
// file external_module.h
typedef externaldata * externalhdl; // opaque pointer
externalhdl external_Create();
// file internal_module.h
typedef internaldata * internalhdl; // opaque pointer
internalhdl internal_Create();
我想什么做的是使用一个外部模块的不透明指针作为一个不透明的指针我的模块里面保存unessasary allocs 。目前我的解决办法执行力度是:
typedef struct {externalhdl e} internaldata;
internalhdl internal_Create()
{
internalhdl p = (internaldata*) malloc (sizeof(internaldata));
p.e = external_Create();
return p;
}
我想这样做的是使用类似:
typedef ??? internaldata; //Don't know how
internalhdl internal_Create()
{
return external_Create();
}
从我的角度来看,这应该是可能的,因为两者都是指针,但我需要得到它警告免费?谢谢你的帮助。
为什么不创建头文件,您可以在其中定义此结构,并将此文件包含到所有源代码中? – betontalpfa
不,你这样做**不是**想要这样做!你根本不想'输入'一个opject指针!最清楚的是:**永远不会**'typedef'指向数据类型的指针!哦,'typedef'完全与内存分配有关。并提供[mcve]。你的代码结构和你的问题并不清楚。从你表现出来看起来好像你迷失在你的个人'typedef'地狱里。 – Olaf
@betontalpfa:这不是_opaque_类型背后的想法。只是它不应该是'typedef'ed的指针。 – Olaf