我是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,甚至布尔值初始化但仍然得到相同的错误。
对于可能导致此问题的人,有什么想法?
答案 0 :(得分:1)
答案 1 :(得分:0)
TL; DR - 您的代码段看起来不错。问题很可能出现在您实际代码的其他地方。
然而,一旦可能的原因,我认为,您的编译器不支持C99
或更高版本。函数代码(混合声明)之间的变量定义允许向前C99
。在其他版本中,它应该出现在函数本身的开头。那么,你也应该在
for(int j=1; j<
因为这也是C99
功能,所以我上面的假设不可能是真的。
请显示更多代码。