2012-09-23 65 views
0

我正在学习一些openCV文档和头文件,并试图完全理解这里发生了什么。函数输入变量

core_c.h

CVAPI(CvMat*) cvInitMatHeader(CvMat* mat, int rows, int cols, 
          int type, void* data CV_DEFAULT(NULL), 
          int step CV_DEFAULT(CV_AUTOSTEP)); 

首先,在cvInitMatHeader

void* data CV_DEFAULT(NULL), 
int step CV_DEFAULT(CV_AUTOSTEP) 

声明是什么这样的输入变量是什么意思?就是这一点,我们平时使用的声明之间的差异,如

void* data 
int step 

其次, 我读的教程,我们实际上可以通过

double a[] = { 1, 2, 3, 4, 
      5, 6, 7, 8, 
      9, 10, 11, 12 }; 
CvMat Ma; 
cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a); 

使用cvInitMatHeader输入变量的数量不匹配与标题,我找不到其他功能过载。

为什么这可以工作?

+0

您是否知道使用参数默认值的函数? – Mahesh

回答

1

从给出的代码我可以推断出CV_DEFAULT(x)是一个扩展到= x的宏。如果您不熟悉它们,请参见default arguments

+0

+1我正在写一个Hello World示例来解释默认参数。维基链接解释更好:) – Mahesh

+0

哇,我很感谢! – StevenR