1

我在启用了 printf 扩展的 ATI 卡上使用 OpenCL。我写了一个函数来打印出变量:

void printVar(constant char* name, float var)
{
    printf("%s: %f\r\n", name, var);
}

此代码在编译为纯 C 时按预期工作,但如果我在 OpenCL 中调用它

printVar("foo", 0.123);

结果总是一些随机字符后跟 0.123 而不是“foo:0.123”。我猜编译器在识别 char* 字符串时存在问题,是否有解决方法或修复方法,以便我可以使函数正常工作?

4

1 回答 1

0

正如我在评论中提到的,我也得到了相同的行为,但是我可以为您展示的用例建议一个简单的解决方法,即当字符串在编译时已知时,我们可以只使用定义语句:

#define PRINTVAR(N,X) (printf(N ": %f\r\n", X))
于 2011-04-06T19:03:55.423 回答