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

来源:互联网 发布:超级电容给单片机供电 编辑:程序博客网 时间:2024/06/03 16:49
读代码时看到语句 CVAPI(IplImage*)  cvCreateImage( CvSize size, int depth, int channels ); 遂想了解下这个CVAPI到底是怎么回事!

#defineCVAPI(rettype)CV_EXTERN_CCV_EXPORTS rettypeCV_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) 详细解释见博文 http://blog.csdn.net/wenhao_ir/article/details/51489091

可见CV_EXPORTS暂时无实质性内容,只是一个预留宏定义,是为了OpenCV在编程上的可扩展性预留的

rettype是宏定义的参数了,这里放具体的类型,表示函数的返回类型!

CV_CDECL的宏定义是#define CV_CDECL __cdecl   __cdecl是VC的关键词,在编译器以蓝色显示 ,它表示的意思如下:

__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。

平时我们在定义函数时是没写上这个声明的,说明已经默认是这个参数或在其它地方声明了!

-------------------------------------------

转载出处:http://blog.csdn.net/wenhao_ir/article/details/51460547

阅读全文
0 0
原创粉丝点击