函数指针给我"重新声明为不同类型的符号"错误

function pointer gives me “redeclared as different kind of symbol” error

本文关键字:quot 同类型 错误 符号 声明 指针 函数 新声明      更新时间:2023-10-16

我想将函数指针解散为:

char*(*palpr_recognize_rawimage)(OPENALPR*, unsigned char*, int, int, int, struct AlprCRegionOfInterest);

这是针对声明为的函数原型:

char *openalpr_recognize_rawimage(OPENALPR *instance, unsigned char *pixelData, int bytesPerPixel, int imgWidth, int imgHeight, struct AlprCRegionOfInterest roi)

但是我在编译时收到此错误:

‘char* (* palpr_recognize_rawimage)(OPENALPR*, unsigned char*, int, int, int, AlprCRegionOfInterest)’ redeclared as different kind of symbol
char*(*palpr_recognize_rawimage)(OPENALPR*, unsigned char*, int, int, int, struct AlprCRegionOfInterest);
                                              ^

避免重新键入复杂定义并可能出错的一种方法是使用 decltype。

因此,在函数原型之后,您可以拥有:

using PFN = decltype(&openalpr_recognize_rawimage);
PFN myfunctionptr;

我发现了问题! 这是typedef palpr_recognize_rawimage_type行中的一个简单的错别字: 我忘了在类型声明中添加后缀_type,因此类型和实际指针具有相同的名称 - 这显然会引起麻烦...... 如果我查看编译器的第一个错误,我会发现以下内容:note: previous declaration很明显,我在类型命名中加入了一些东西。

--> 不仅要看第一个/顶部错误,还要至少看第二个错误是值得的 - 正如您永远不知道的那样,它也可能提供提示!