2010-02-20 57 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足夠高興不要給你任何警告。