2
我已經掃描了大部分指針初始化警告和結構初始化問題,但沒有什麼似乎相當數學我的問題。警告:從不兼容的指針類型初始化 - 如何初始化包含函數指針的結構數組
我的問題是最相似的,用戶bhinesley要求7月27 '11在23:28。但在我的情況下,我的結構只包含函數指針 - 其中2個。
我聲明它像這樣在我的報頭:
typedef int (*CRCchecker)(PktDescriptr, ringbuffr, int); type
typedef struct
{
CRCchecker CRCcheckPROC ;//(PktDescriptr, ringbuffr, int);
CRCchecker CRCmakePROC ; //(PktDescriptr, ringbuffr, int);
} PIDprocs;
然後,定義了,在我的源文件這樣初始化它:
PIDprocs CRCcheckrs[16] ={
{NULL, NULL},
{CRCtokenCheck, CRCtokenMake},
{&CRChndshakeCheck, &CRChndshakeMake},
{&CRCdataCheck, &CRCdataMake},
{&CRCtokenCheck, &CRCtokenMake},
{&CRCtokenCheck, &CRCtokenMake},
{&CRChndshakeCheck, &CRChndshakeMake},
{&CRCdataCheck, &CRCdataMake},
{&CRCsplitCheck, &CRCsplitMake},
{&CRCtokenCheck, &CRCtokenMake},
{&CRChndshakeCheck, &CRChndshakeMake},
{&CRCdataCheck, &CRCdataMake},
{&CRCtokenCheck, &CRCtokenMake},
{&CRCtokenCheck, &CRCtokenMake},
{&CRChndshakeCheck, &CRChndshakeMake},
{&CRCdataCheck, &CRCdataMake}};
我聲明在相同的報頭中的陣列爲extern文件(在上面的typedefs之後):
extern PIDprocs CRCcheckrs[16] ;
我定義了源代碼中的函數t母雞複製其DEFN到相同的頭文件,並宣佈他們爲extern(將extern用於陣列下文):
extern int CRChndshakeMake(PktDescriptr usbPkt, ringbuffr* usbPktpload, int* CRCcalc) ;
extern int CRChndshakeCheck(PktDescriptr usbPkt, ringbuffr* usbPktpload,int*CRCcalc) ;
等
它編譯確定,但給出的可怕警告:初始化形式兼容的指針類型 我嘗試通過成員名稱分配以及忽略&(請參閱第二個數組元素)
什麼是錯誤的,我該如何解決它?
謝謝,那就是問題所在。 – DRD