CV_IMPL opencv

在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"


其实就相当于extern "C",这个的含义如下:

编程语言种类繁多各有优劣,因此在做软件工程时,往往会出现不同语言嵌入或互相调用的情况;例如在C和C++之间就经常出现互相调用!虽然C++是C的超集,但是,它们之间的编译器是不同的,这就引发了各自的编译器在对C和C++进行编译时要依据哪一个作为大家都认可的规范或者约定的问题。很幸运的是,通过一些基础特征我们制定了这样的一个规约,这就是“C”的出处,这些基础特征就是:
1)这种调用编译是一种“超”链接;
2)这种调用编译不能影响现有的编译规范;
3)C++是C的拓展,是C的升华。
根据1),extern关键字可以表达这种“超”链接;根据2)、3)用“C”来规约在C++中对C的编译。
因此,extern "C"表明了一种编译规约,其中extern是关键字属性,“C”表征了编译器链接规范。对于extern "C"可以理解成在C++/C中的混合编程的编译指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值