我想将函数指针删除为:
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);
^
答案 0 :(得分:1)
避免重复输入复杂定义并可能导致错误的一种方法是使用decltype。
因此,在您的函数原型之后,您可以:
using PFN = decltype(&openalpr_recognize_rawimage);
PFN myfunctionptr;
答案 1 :(得分:1)
我发现了问题!
这是typedef palpr_recognize_rawimage_type
行中的一个简单错字:
我忘记在类型声明中添加后缀_type
,因此类型和实际指针具有相同的名称-显然会引起麻烦...
如果我从编译器的第一个错误中查看,我会发现以下内容:note: previous declaration
,并且很明显我在类型命名中遇到了麻烦。
->不仅要查看第一个/顶部错误,而且还至少要查看第二个错误,这是值得的-众所周知,它也可能提供提示!