我得到了下面的代碼:的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