关于标准C语言参数个数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:35:18
有一个函数,声明中是5个参数,不过第五个参数是一个宏,在后边引用这个函数的时候,直接只用了四个参数,第五个省略了。
函数声明:CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL))

引用:CvMat M = cvMat (2, 3, CV_32F, m);引用中用到的宏CV_32F和m前边都已经定义了。

CV_DEFAULT(NULL)的定义是这样:
#ifdef __cplusplus
#define CV_DEFAULT(val) = val
#else
#define CV_DEFAULT(val)
#endif

我记得好像标准C不像C++一样支持可变形参数量的啊,不是应该在引用中保持形参数量和声明时一直么?
提问了才发现,我最说的后边两个参数之间没有逗号呢,那么最后这个宏是不是直接就被编译器忽略了啊。

这根本就不是什么“第五个参数”, 这是第四个参数后面加一个宏。 如果吧这个当作c++来编译那么这个宏就展开成默认参数NULL, 如果是c编译,那么这个宏什么都不做

我认为 宏和常数是一个意思

既然有默认参数的函数 那么这种情况也应该算在里面