我有一个名为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?
中支持谢谢和问候!
答案 0 :(得分:15)
正确 - 标准C不支持默认参数,既不支持C89标准也不支持C99标准(也不支持C2011标准)。在某些编译器中可能存在特定于编译器的扩展以支持它,但它不是标准的。
答案 1 :(得分:2)
C需要一个特殊的符号。
http://www.swig.org/Doc1.3/Varargs.html
您无法定义要传递给普通函数的默认变量。您可以设置一个自动神奇地传递默认值的宏,并根据需要将其用作函数条目。