我在启用了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))