OpenCV1.x中的CV_IMPL是什么意思?

在cvEqualizeHist的函数定义源码中发现了宏定义CV_IMPL,如下:

CV_IMPL void cvEqualizeHist( const CvArr* srcarr, CvArr* dstarr )

上网查询CV_IMPL的含义如下:

在internal.hpp文件里面有定义:
#  define CV_IMPL CV_EXTERN_C
而关于CV_EXTERN_C,则在types_c.h里面有定义
#  define CV_EXTERN_C extern "C"

从上面的嵌套定来看,CV_IMPL其实就相当于extern "C",它的含义如下:

编程语言种类繁多各有优劣,因此在做软件工程时,往往会出现不同语言嵌入或互相调用的情况;例如在C和C++之间就经常出现互相调用!虽然C++是C的超集,但是,它们之间的编译器是不同的,这就引发了各自的编译器在对C和C++进行编译时要依据哪一个作为大家都认可的规范或者约定的问题。

extern "C"就表明这句代码或这段代码用C编译器的规则去编译,而不是用C++的编译规则去编译。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值