2015-07-01 158 views
0

我是C新手,並且與CUDA一起工作,儘管我不認爲這個問題是針對CUDA的 - 我已經能夠在沒有任何問題的情況下將數據傳輸到GPU設備或從GPU設備傳輸數據,並且僅用於測試目的,單線程。循環不識別變量?

長循環計算f1和f2後,我有這樣的代碼片段:

float price = 0; 
float net = 0; 
int numTrades = 0; 

for (int j = 1; j < dataCol; j++) { 
    if (((f1[j] > f2[j]) && (f1[j - 1] < f2[j - 1]) && price == 0)) { 
      price = data[j]; 
      numTrades++; 
    } 
    else if (((f1[j] < f2[j]) && (f1[j - 1] > f2[j - 1]) && price != 0)) { 
      net += data[j] - price; 
      price = 0; 
      numTrades++; 
    } 
} 

其中,據我可以告訴沒有任何問題,除了它拒絕編譯事實與一個「標識符」價格「未定義」錯誤來自第一個if語句。這段代碼是我提到的代碼中的第一個地方,我嘗試用int,float,double,甚至布爾值進行初始化,但仍然得到相同的錯誤。

任何人有任何想法可能會導致此?

+1

你有沒有正確地完成語句之前'浮動價= 0;'線?也許這是錯誤的,並且這隻會成爲編譯器失敗的一個。 –

+0

是的..這是令人尷尬的,我不知道爲什麼它沒有像往常一樣將我指向上面的線。儘管感謝您的快速回復。 – MKennedy

+0

Your're歡迎@AltusVultur。將它作爲答案發布。 –

回答

0

TL; DR - 您的代碼段看起來沒問題。問題很可能在您的實際代碼中的其他地方。

然而,一旦可能的原因,我的看法是,您的編譯器不支持C99或以上。在函數代碼(混合聲明)之間的變量定義允許向前C99。在其他版本中,它應該在函數本身的開頭。然後,此外,你應該已經收到錯誤

for(int j=1; j< 

,因爲這也是一個C99功能,所以我的上述假設不太可能是真的。

請再顯示一些代碼。

1

文藝青年最愛的,如果事情莫名其妙地在一個地方破,看它上面的錯別字(我錯過了前一行分號。)