图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
读代码时看到语句 CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels ); 遂想了解下这个CVAPI到底是怎么回事!
#define CVAPI(rettype) CV_EXTERN_C CV_EXPORTS rettype CV_CDECL
CV_EXTERN_C 的宏定义是#define CV_EXTERN_C extern "C"
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的语法进行编译,而不是C++的语法
CV_EXPORTS 的宏定义为# define CV_EXPORTS __declspec(dllexport) 详细解释见我的另一篇博文,链接 https://blog.youkuaiyun.com/wenhao_ir/article/details/51489091
可见CV_EXPORTS暂时无实质性内容,只是一个预留宏定义,是为了OpenCV在编程上的可扩展性预留的。
rettype是宏定义的参数了,这里放具体的类型,表示函数的返回类型!
CV_CDECL的宏定义是#define CV_CDECL __cdecl __cdecl是VC的关键词,在编译器以蓝色显示 ,它表示的意思如下:
__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。
图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601