c - 需要左值作为赋值的左操作数

标签 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;

}

我认为问题出在 vector E 中,但我找不到这个错误的根源。有人可以帮我解决这个问题吗?

谢谢。

最佳答案

您忘记声明索引

出现明显奇怪的错误消息的原因 - “需要左值...”而不是“'index'未声明...” - 是因为有一个名为“index”的库函数,你已经发生了包括声明(最有可能 this one )。

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

关于c - 需要左值作为赋值的左操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078361/

相关文章:

c - 将 kmalloc 内存映射到用户空间

c - 初始化由 int 和 char 指针组成的 struct 结构成员?

python - 重启电脑后Linux串口中的C乱码

c - C 中的 HTTP : Why do I have to call recv() multiple times?

c++ - 保护定义的 C 宏

c - 试图导致 "worse case"快速排序

c - 将整数值作为字节值保存在 ansi c 的 char 中

c - 如何有效地将多个参数与要在 C 中打印的字符串连接起来?

c++ - 为什么我的头文件无法在 VSCode 中使用 clangd 正确索引彼此的声明依赖关系?

c - 内核模式键盘过滤器拦截-双输出