11

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

cvSaveImage( out_img_name, img);  

编译器 gcc 报告说

函数 cvSaveImage 的参数太少

highgui.h 中 cvSaveImage 的原型是

CVAPI(int) cvSaveImage( const char* 文件名, const CvArr* image, const int* params CV_DEFAULT(0) )

在我改变我的电话之后

cvSaveImage( out_img_name, img, 0);  

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

谢谢并恭祝安康!

4

2 回答 2

15

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

于 2009-11-15T04:53:03.880 回答
2

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

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

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

于 2009-11-15T04:55:32.960 回答