我在启用了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 *字符串方面存在问题,是否有解决方法或修复方法以便我可以使该函数正常工作?
答案 0 :(得分:0)
正如我在评论中提到的,我也得到了相同的行为,但是我可以为你展示的用例建议一个简单的解决方法,即。当字符串在编译时已知时,我们可以改为使用define语句:
#define PRINTVAR(N,X) (printf(N ": %f\r\n", X))