左值作为赋值的左操作数

时间:2016-06-28 14:02:07

标签: c

我收到以下错误:左值作为赋值的左操作数 对于此功能代码:

typedef struct {
  int nbIndividus;
  int nbVariables;
  distance_t *distancesReference;
  double **target;
  double *E;
  double *lag;
} functionData_t;

    double myfunc (unsigned n,const double *x, double *grad, void *my_func_data)
{
   int i,j,k,t,ind1,ind2,a,test_nb;
   double temp,sigma,eta,distanceCarre,sommeObj,distance,compteurDistance,somme,objectifFunction,Somme,*Array_val_E;
   int nbIndividus,nbVariables,NbDisplacement,nb_val_E;
   double **target;
   double *E;
   double *lag ;

   distance_t *distancesReference;
   functionData_t *functionData=(functionData_t *)my_func_data;


   nbIndividus=functionData->nbIndividus;
   nbVariables=functionData->nbVariables; 
   target= functionData->target;
   E= functionData->E;
   lag=functionData->lag;
   distancesReference=functionData->distancesReference; 
   sommeObj=0;
   somme=0;
   sigma=0.13;
   eta=0.5;
   nb_val_E=114814;
   compteurDistance=0;
   NbDisplacement=0;
  for(k=1;k<nbIndividus;k++){
   compteurDistance=compteurDistance+(nbIndividus-k);
  }


  for(i=0;i<compteurDistance;i++){
        ind1=distancesReference[i].i;
        ind2=distancesReference[i].j;
        distance=distancesReference[i].distance;
        Somme=0;
        for(k=0;k<nbVariables;k++) {
         temp=target[ind1][k]-target[ind2][k]+x[ind1*nbVariables+k]-x[ind2*nbVariables+k];
     Somme+=temp*temp;
        }
        distanceCarre=Somme;
        for(t=0;t<=nb_val_E;t++){
           Array_val_E[t]=fabs(E[t]-(distanceCarre/(4*sigma*sigma)));
        }
        index=min_array(Array_val_E,nb_val_E);
        sommeObj+=(distancesReference[i].distance)*(distancesReference[i].distance)+distanceCarre+2*sigma*sigma*nbVariables-2*sqrt(3.14)*(distancesReference[i].distance)*sigma*val_lag(index);
     }

    objectifFunction=sommeObj;

    return objectifFunction;

}

我认为问题出现在向量E中,但我无法找到此错误的来源。有人可以帮我解决一下吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您忘记声明index

显然奇怪的错误信息的原因 - “lvalue required ...”而不是像''index'unclaclared ......“ - 是有一个名为”index“的库函数你发生了包括(很可能是this one)的声明。

当你没有使用变量声明隐藏该函数时,你试图分配给一个函数(由于显而易见的原因你不能这样做)。