【发布时间】:2011-03-20 20:08:36
【问题描述】:
我在使用 opencv 的 C++ 项目中使用 VS2010。 opencv 中的许多调用对于函数的最后几个参数都有默认参数。但是,在函数调用中省略这些参数时,Visual Studio 会抱怨并说"functionname: too few arguments for call
这是视觉工作室的怪癖吗?这是我可以关闭的设置吗?为什么会出现这种情况。代码在g++下编译良好。
编辑
举个例子,
#include <cv.h>
#include <cxcore.h>
int main()
{
CvMat *rotation_vector = cvCreateMat(3,3, CV_64FC1);
double rotation[] = { 0, 1, 0,
-1, 0, 0,
0, 0, 1 };
cvInitMatHeader(rotation_vector, 3, 3, CV_64FC1, rotation, 2147483647); // works
cvInitMatHeader(rotation_vector, 3, 3, CV_64FC1, rotation); // doesn't work
return 0;
}
【问题讨论】:
-
你能提供一个具体的例子吗?
-
你可以提供一些代码。 VC++ 可以很好地使用默认参数。
-
输入 cvInitMatHeader() 时,intellisense 会为您提供参数列表。如下:“(CvMat mat, int rows, int cols, int type, void *data = (void)0, int step = 2147483647)”
-
@soxarered:嗯,我希望您在
cxcore.h文件本身中找到实际声明本身。可能有一些宏,智能感知可能不会显示它们。 -
@soxarered:你的意思是如果
__cplusplus被定义了,那么就使用等号的形式吗?我认为您的 VC++ 项目设置为编译 C 代码而不是 C++ 代码,因此__cplusplus最终未定义。 Check your project settings.
标签: c++ visual-studio opencv