C语言中错误代码C2064,error C2064: term does not evaluate to a function,该怎么解决

这篇博客讨论了一个C++编程中的错误:error C2064。问题出现在`int sad10=sad(r,p2,r-322,p1);`等语句中,由于局部变量`sad[9]`与函数`sad`同名,导致编译器将函数解析为数组,从而引发错误。解决方案是为局部变量`sad`选择一个不同的名称,以避免名字冲突。
摘要由CSDN通过智能技术生成

当前位置:我的异常网» C++ » error C2064: term does not evaluate to a functio

error C2064: term does not evaluate to a function,该怎么解决

www.myexceptions.net  网友分享于:2013-12-19  浏览:75次

error C2064: term does not evaluate to a function

请大家帮我看下这段C代码中有什么错,找了好久。。在线等。。

int sad(int k,char *p1,int l,char *p2)

{

char *block1;

block1=new  char[256];

char *block2;

block2=new  char[256];

block1=Bmpdivision(k,p1);

block2=Bmpdivision(l,p2);

int sad=0;

for(int i=0;i<256;i++)

{

int c=block1[i]-block2[i];

sad+=c;

}

return sad;

}

int *vmode9(char *p1,char *p2,int r)

{

int sad1=sad(r,p2,r-321,p1);

int sad2=sad(r,p2,r-320,p1);

int sad3=sad(r,p2,r-319,p1);

int sad4=sad(r,p2,r-1,p1);

int sad5=sad(r,p2,r,p1);

int sad6=sad(r,p2,r+1,p1);

int sad7=sad(r,p2,r+319,p1);

int sad8=sad(r,p2,r+320,p1);

int sad9=sad(r,p2,r+321,p1);

int sadmin=sad1;

int sad[9];

sad[0]=sad1;

sad[1]=sad2;

sad[2]=sad3;

sad[3]=sad4;

sad[4]=sad5;

sad[5]=sad6;

sad[6]=sad7;

sad[7]=sad8;

sad[8]=sad9;

for(int i=0;i<8;i++)

{

if (sad[i+1]

sadmin=sad[i+1];

}

if(sadmin==sad1)

{

int sad10=sad(r,p2,r-322,p1);

int sad11=sad(r,p2,r-641,p1);

if(sad10

vmodelin(r,p2,r-322,p1);

else

vmodelin(r,p2,r-641,p1);

}

else if(sadmin==sad2)

{

int sad12=sad(r,p2,r-640,p1);

int sad13=sad(r,p2,r-960,p1);

if(sad12

vmodelin(r,p2,r-640,p1);

else

vmodelin(r,p2,r-960,p1);

}

else if(sadmin==sad3)

{

int sad14=sad(r,p2,r-318,p1);

int sad15=sad(r,p2,r-639,p1);

if(sad14

vmodelin(r,p2,r-318,p1);

else

vmodelin(r,p2,r-639,p1);

}

else if(sadmin==sad4)

{

int sad16=sad(r,p2,r-2,p1);

int sad17=sad(r,p2,r-3,p1);

if(sad16

vmodelin(r,p2,r-2,p1);

else

vmodelin(r,p2,r-3,p1);

}

else if (sadmin==sad5)

vxy(i,i);

else if (sadmin==sad6)

{

int sad18=sad(r,p2,r+2,p1);

int sad19=sad(r,p2,r+3,p1);

if(sad18

vmodelin(r,p2,r+2,p1);

else

vmodelin(r,p2,r+3,p1);

}

else if(sadmin==sad7)

{

int sad20=sad(r,p2,r+318,p1);

int sad21=sad(r,p2,r+639,p1);

if(sad20

vmodelin(r,p2,r+318,p1);

else

vmodelin(r,p2,r+639,p1);

}

else if(sadmin==sad8)

{

int sad22=sad(r,p2,r+640,p1);

int sad23=sad(r,p2,r+960,p1);

if(sad22

vmodelin(r,p2,r+640,p1);

else

vmodelin(r,p2,r+960,p1);

}

if (sadmin==sad9)

{

int sad24=sad(r,p2,r+621,p1);

int sad25=sad(r,p2,r+322,p1);

if(sad24

vmodelin(r,p2,r+621,p1);

else

vmodelin(r,p2,r+322,p1);

}

}

vmode9这个函数返回的是个一维指针,通过vxy这个调用函数实现,只有条件匹配符合sadmin==5时才会中止,否则调用vmodelin这个函数。编译问题出现在从int sad10=sad(r,p2,r-322,p1);及后面的sad11、sad12......等定义赋值语句中,问题显示为error C2064: term does not evaluate to a function。请各位大大看看吧

------最佳解决方案--------------------

vmode9 内部的数组变量 int sad[9],覆盖了全局函数 sad,后面对于 sad 的解析都理解为数组了,所以 sad(...) 的用法导致错误,给数组换个名字就行了,比如 int sads[9];

------其他解决方案--------------------

注意int sad(int k,char *p1,int l,char *p2)和int sad[9];

请不要用相同的名称。

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值