gpt4 book ai didi

arrays - 警告 : initialization from incompatible pointer type - how to initialize array of struct containing function pointers

转载 作者:行者123 更新时间:2023-12-04 04:48:43 24 4
gpt4 key购买 nike

我已经扫描了大部分指针初始化警告和结构初始化问题,但似乎没有什么能完全解决我的问题。

我的问题与用户 bhinesley 于 11 年 7 月 27 日 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] ;

我在源代码中定义了函数,然后将它们的 defn 复制到同一个头文件中,并将它们声明为 extern(在数组的 extern 下方):
extern int CRChndshakeMake(PktDescriptr usbPkt, ringbuffr* usbPktpload, int* CRCcalc) ;
extern int CRChndshakeCheck(PktDescriptr usbPkt, ringbuffr* usbPktpload,int*CRCcalc) ;

等。

它编译正常,但给出了可怕的警告:初始化形式不兼容的指针类型
我尝试按成员名称进行分配并省略 & (请参阅第二个数组元素)

出了什么问题,我该如何解决?

最佳答案

int CRChndshakeMake(PktDescriptr usbPkt, ringbuffr* usbPktpload, int* CRCcalc)

与您的声明不符;
typedef int (*CRCchecker)(PktDescriptr, ringbuffr, int);

它显然不同意某些指示。

关于arrays - 警告 : initialization from incompatible pointer type - how to initialize array of struct containing function pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17765170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com