一个宏定义---OpenCV源码阅读之一

来源:互联网 发布:华三交换机端口镜像 编辑:程序博客网 时间:2024/05/21 11:08

CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));

看到这一行,发现 int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)

不是太懂,于是看了一下CV_DEFAULT的定义: // Highgui.h中。

#ifndef CV_EXTERN_C
    #ifdef __cplusplus
      #define CV_EXTERN_C extern "C"
      #define CV_DEFAULT(val) = val
    #else
      #define CV_EXTERN_C
      #define CV_DEFAULT(val)
    #endif
#endif

这里做了两件事,第一件事是定义

extern "C" :这种定义方式只是存在于c++中,所以前面有个#ifdef __cplusplus , 在C中是没有extern "C"的定义方式的,所以定义CV_EXTERN_C为空。

C++中一个函数可以默认参数。比如写做

CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor = CV_LOAD_IMAGE_COLOR);

但是在C中是没有这种定义方式的,那么在C中只能写做

CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor );

那么再对照一下CV_DEFAULT的定义方式应该就比较明白了。

原创粉丝点击