2009-11-15 213 views
11

我有一个名为opencv2.0功能的C程序:“错误:参数太少运作”

cvSaveImage(out_img_name, img); 

编译器GCC报道说

too few arguments to function cvSaveImage

cvSaveImage的highgui.h原型是

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

后,我改变我的电话是

cvSaveImage(out_img_name, img, 0); 

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

感谢和问候!

+0

我想这只是在新版本的opencv中发生的,我没有得到这个错误与Ubuntu版本库中可用的旧版本,但是当我编译新版本时,曾经运行的代码给了我你错误的错误谈论 – 2010-06-19 13:27:54

回答

15

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

+0

我正在使用可用于Visual Studio中的C++语言的项目模板编写我的C程序。有一段时间我一直在写它,当我打开配置属性 - > C/C++ - >高级 - >编译为'到'编译为C代码(/ TC)'我的'gets_s'代码开始抛出本主题中提到的错误。然后,我必须显式传递整数值作为get_s的第二个参数,以使其可编译。 – RBT 2016-10-31 08:12:58

2

如果要使用可变数量的参数,C需要特殊的符号。

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

不能定义为纯函数传递一个默认变量。你可以设置一个宏,它会自动魔法地传递一个默认值,并且如果你愿意,可以用它作为你的函数入口。

相关问题