2010-02-20 92 views
0

问题,当我尝试编译我的代码下面我收到以下错误:取消引用用C

错误C2440:“> =”:不能从“双*”转换为“双”

错误C2440 : '> =':不能从 '双*' 转换为 '双'

我相信我提领一切正常

#define TRUE 1 
#define FALSE 0; 

#include <stdio.h> 

typedef struct Con{ 
    double samTime[2]; 
    double sen[2]; 
    int test[2]; 
} CON, *CON_PTR; 

void GM(double **TTXY) { 
    int NoS; 
    int numOfSen = 2; 
    int startTime =0; 
    CON con; 

    if((con = (CON_PTR) malloc(numOfSen*sizeof(CON)))==NULL) { 
    printf(“Malloc failed\n”); 
    exit(1); 
    } 
    for (NoS=0;NoS<numOfSen;NoS++) { 
    con[NoS].samTime[0] = startTime; 
    con[NoS].samTime[1] = startTime; 
    con[NoS].sensor[0] = 0; 
    con[NoS].sensor[1] = 0; 
    con[NoS].test[0] = FALSE; 
    con[NoS].test[1] = FALSE; 
    } 

    if (con[NoS].samTime[0] >= TTXY[1]) { 
    con[NoS].test[0] = TRUE; 
    } 
    if (con[NoS].samTime[1] == TTXY[1]) { 
    con[NoS].test[1] = TRUE; 
    } 
} 
+1

发布实际代码。您发布的样本中没有“con”或“TTXY”的定义。此外,'int NoS'这行是不合格的。 – dirkgently 2010-02-20 16:40:01

+1

#defining FALSE以包含分号是一个等待发生的错误。 – bk1e 2010-02-20 17:34:35

回答

1

首先,有一个缺少分号

int NoS 

,你的主要功能是不正确的,这必须

int main() 
int main(int argc, char **argv) 
void main() // not standard but allowed by some compilers (with warning) 

之一,并为你的问题,没有你不因为您的TTXY阵列是二维的,所以请正确引用它。所以它应该是这样的

if (con[NoS].samTime[0] >= TTXY[1][some other number]) { 

什么适合您的代码。如果其他人应该理解代码,则应该为变量使用更多描述性名称。

如果TTXY应该是一个一维数组,那么您不需要通过引用来传递它(function(&TTXY)),传递指针值(function(TTXY))就足够了并且更具可读性。

1

TTXY被声明为双**,所以TTXY [1]双*,不是双倍,所以您无法将TTXY [1]与con [NoS] .samTime [0]进行比较。

我想可能是你在函数头有一个错字,尝试修改它为void main(double * TTXY)?

+0

@anon我想推荐你改变函数名称,因为使用'main'可能会引起歧义。 – ZelluX 2010-02-20 16:47:00

+0

'main'的_only_标准签名是:'int main(void)'和'int main(int argc,char ** argv)'。 'void main(double ** TTXY)'永远不会工作。 – dirkgently 2010-02-20 16:48:42

1

为什么你的主要功能有签名

(int)(double**) 

是一个有效的C程序,主要必须有签名:

(int)(int, char**) 

如果你想主要处理它的参数以另一种方式,那么你需要自己转换它们。

0

程序中有四个语法错误。

  1. int Nos - 缺少分号。
  2. con - 此变量在使用前未声明。
  3. sensor不是struct Con的记忆。
  4. TTXYTTXY是指向双指针的指针,不指向双指针,所以您应该使用*TTXY[1]来访问TTXY双指针数组中第一个双指针的第一个双指针。

注:

  1. 通常你应该遵循main函数的标准形式,但没有定义main功能的自己的正常稿。版本应该是int main(void)int main(int argc, char *argv[])
  2. 你应该包括<stdlib.h>使gcc足够高兴不要给你任何警告。