2012-09-23 93 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