我的书使用像这样的getInfo()
platforms[i].getInfo((cl_platform_info)CL_PLATFORM_NAME , &platformName);
但它可以正常工作
platforms[i].getInfo(CL_PLATFORM_NAME , &platformName);
...平台设置如下:
cl::vector <cl::Platform> platforms;
cl::Platform::get(&platforms);
答案 0 :(得分:2)
对于我自己的普通C代码项目,我避免了不必要的类型转换。其他人偶尔会声称不必要的类型转换可以帮助他们理解代码。一个复杂的因素是,对于C程序员来说,C ++本身需要不必要的类型转换(当将void指针分配给非void指针时)。一些同时进行C和C ++编码的程序员忘记了这个C / C ++差异,最终在C代码中添加了不必要的类型转换。不必要的类型转换的另一个原因是过度“有用”的编译器警告设置:http://notabs.org/coding/warningLevel4.htm。在我看来,类型转换(至少在C代码中)通常是一个红色标记,警告读者代码正在做一些不寻常,非标准或快速和肮脏的事情。在你的例子中,即使所有编译器都需要它,我也会反对类型转换。如果所有编译器都需要类型转换,那么它应该嵌入在CL_PLATFORM_NAME的定义中。我的猜测是本书的作者使用了一些C ++编译器和警告级别,迫使他使用类型转换。我建议避免不必要的类型转换。