Visual studio不允许查看默认参数? 我使用OpenCV在一个C++项目上使用VS2010。opencv中的许多调用在函数的最后几个参数中都有默认参数。但是,当在函数调用中忽略这些参数时,VisualStudio会抱怨并说“functionname:调用的参数太少
这是visual studio的一个怪癖吗?这是一个我可以关闭的设置吗?为什么会发生这种情况。代码在g++下编译得很好 编辑 例如,Visual studio不允许查看默认参数? 我使用OpenCV在一个C++项目上使用VS2010。opencv中的许多调用在函数的最后几个参数中都有默认参数。但是,当在函数调用中忽略这些参数时,VisualStudio会抱怨并说“functionname:调用的参数太少,c++,visual-studio,opencv,C++,Visual Studio,Opencv,这是visual studio的一个怪癖吗?这是一个我可以关闭的设置吗?为什么会发生这种情况。代码在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,
#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;
}
#包括
#包括
int main()
{
CvMat*旋转向量=cvCreateMat(3,3,CV_64FC1);
双旋转[]={0,1,0,
-1, 0, 0,
0, 0, 1 };
CVinitMathHeader(旋转向量,3,3,CV_64FC1,旋转,2147483647);//有效
CVinitMathHeader(旋转向量,3,3,CV_64FC1,旋转);//不起作用
返回0;
}
cvInitMatHeader()的声明如下:
CVAPI(CvMat*) cvInitMatHeader( CvMat* mat, int rows, int cols, int type,
void* data CV_DEFAULT(NULL), int step CV_DEFAULT(CV_AUTOSTEP) );
CV\u DEFAULT
的定义如下:
#ifdef __cplusplus
#define CV_DEFAULT(val) = val
#else
#define CV_DEFAULT(val)
#endif
<> P> >你的Visual C++编译器实际上是编译在C模式而不是C++模式下。在C模式下,<代码> >
<> P>并确保您在C++模式下编译代码。也就是说,确保“<代码> /TP > /COD>或/TP< /Cult>编译器开关被启用。您还应该确保C++文件具有<代码> .CPP < /Cord>文件扩展名。< / P>您能提供一个具体的例子吗?您可以提供一些代码。很好。当键入cvInitMatHeader()时,intellisense会提供参数列表。它如下所示:“(CvMat mat,int rows,int cols,int type,void*data=(void)0,int step=2147483647)“@soxarered:嗯,我想让你在cxcore.h
文件中找到实际的声明本身。可能有一些宏,intellisense可能不显示它们。@soxarered:您的意思是如果定义了\uuuCPlusplus
,那么使用等号形式吗?我认为你的VC++项目是编译C代码而不是C++代码,所以<代码>