“错误:功能参数太少”

时间:2009-11-15 04:49:17

标签: c function opencv default-value arguments

我有一个名为opencv2.0的C程序:

cvSaveImage( out_img_name, img);  

编译器gcc报告

  

函数cvSaveImage的参数太少

highgui.h中的cvSaveImage原型是

  

CVAPI(int)cvSaveImage(const char * filename,const CvArr * image,const int * params CV_DEFAULT(0))

将我的电话改为

cvSaveImage( out_img_name, img, 0);  

编译终于成功了。这是否意味着函数参数的默认值仅在C ++中支持,而不是在C?

中支持

谢谢和问候!

2 个答案:

答案 0 :(得分:15)

正确 - 标准C不支持默认参数,既不支持C89标准也不支持C99标准(也不支持C2011标准)。在某些编译器中可能存在特定于编译器的扩展以支持它,但它不是标准的。

答案 1 :(得分:2)

如果你想使用可变数量的参数,

C需要一个特殊的符号。

http://www.swig.org/Doc1.3/Varargs.html

您无法定义要传递给普通函数的默认变量。您可以设置一个自动神奇地传递默认值的宏,并根据需要将其用作函数条目。