“错误:函数的参数太少”
Posted
技术标签:
【中文标题】“错误:函数的参数太少”【英文标题】:"error: too few arguments to function" 【发布时间】:2010-12-16 17:37:17 【问题描述】:我有一个名为 opencv2.0 函数的 C 程序:
cvSaveImage( out_img_name, img);
编译器 gcc 报告
函数 cvSaveImage 的参数太少
highgui.h中cvSaveImage的原型是
CVAPI(int) cvSaveImage( const char* 文件名, const CvArr* 图像, const int* 参数 CV_DEFAULT(0) )
在我将呼叫更改为之后
cvSaveImage( out_img_name, img, 0);
终于编译成功了。这是否意味着函数参数的默认值仅在 C++ 中支持,而在 C 中不支持?
感谢和问候!
【问题讨论】:
我猜这只是发生在新版本的opencv中,我没有在ubuntu存储库上使用旧版本时遇到这个错误,但是当我编译新版本时,曾经运行的代码给出了我你说的错误 【参考方案1】:正确 - 标准 C 不支持默认参数,无论是在 C89 标准中还是在 C99 标准中(也不是在 C2011 标准中)。在某些编译器中可能有特定于编译器的扩展来支持它,但这不是标准的。
【讨论】:
我正在使用 Visual Studio 中 C++ 语言可用的项目模板编写我的 C 程序。有一段时间我一直在写它,当我打开设置Configuration Properties -> C/C++ -> Advanced -> Compile As
到Compile as C code (/TC)
我的gets_s
代码开始抛出这个线程中提到的错误。然后我必须将整数值作为get_s
的第二个参数显式传递以使其可编译。【参考方案2】:
如果你想使用可变数量的参数,C 需要一个特殊的符号。
http://www.swig.org/Doc1.3/Varargs.html
您不能定义要传递给普通函数的默认变量。您可以设置一个自动神奇地传入默认值的宏,如果您愿意,可以将其用作您的函数入口。
【讨论】:
以上是关于“错误:函数的参数太少”的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 4 - 如何在不构建表单的情况下添加 csrf 令牌?
损失函数(损失函数代价函数目标函数)MSE0-1损失函数绝对误差损失函数分位数损失函数Huber损失函数感知损失函数Hinge损失函数指数损失函数对数损失函数
Kotlin函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )
8InfluxDB常用函数聚合函数,count()函数,DISTINCT()函数,MEAN()函数,MEDIAN()函数,SPREAD()函数,SUM()函数
Kotlin函数式编程 ② ( 过滤函数 | predicate 谓词函数 | filter 过滤函数 | 合并函数 | zip 函数 | folder 函数 | 函数式编程意义 )