理解OpenCV中的宏定义 CVAPI(函数返回类型)

图像处理开发需求、图像处理接私活挣零花钱,请加微信/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值