ATI OpenCL printf扩展问题与char*参数传递给一个函数



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

void printVar(constant char* name, float var)
{
    printf("%s: %frn", name, var);
}

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

调用它
printVar("foo", 0.123);

的结果总是一个随机字符后面跟着0.123而不是"foo: 0.123"。我猜编译器有识别char*字符串的问题,是否有解决方法或修复,所以我可以得到函数的工作?

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

#define PRINTVAR(N,X) (printf(N ": %frn", X))

最新更新