函数指针给我“声明为另一种符号”错误

时间:2018-08-13 02:27:37

标签: c++ function pointers dlsym

我想将函数指针删除为:

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);
                                                                                                                    ^

2 个答案:

答案 0 :(得分:1)

避免重复输入复杂定义并可能导致错误的一种方法是使用decltype。

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

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

答案 1 :(得分:1)

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

->不仅要查看第一个/顶部错误,而且还至少要查看第二个错误,这是值得的-众所周知,它也可能提供提示!