1

我的书像这样使用 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);
4

1 回答 1

2

对于我自己的纯 C 代码项目,我避免了不需要的类型转换。其他人偶尔声称不必要的类型转换有助于他们理解他们的代码。一个复杂的因素是,对于 C 程序员来说,C++ 本身需要不必要的类型转换(当将 void 指针分配给非 void 指针时)。一些同时进行 C 和 C++ 编码的程序员忘记了这种 C/C++ 差异,最终在 C 代码中添加了不必要的类型转换。不必要的类型转换的另一个原因是过度“有用”的编译器警告设置: http: //notabs.org/coding/warningLevel4.htm. 在我看来,类型转换(至少在 C 代码中)通常是一个危险信号,它警告读者代码正在做一些不寻常的、非标准的或快速而肮脏的事情。在您的示例中,即使所有编译器都需要它,我也会反对类型转换。如果所有编译器都需要类型转换,那么它应该已经嵌入到 CL_PLATFORM_NAME 的定义中。我的猜测是这本书的作者使用了一些 C++ 编译器和警告级别,迫使他使用类型转换。我建议避免不必要的类型转换。

于 2013-06-18T03:00:35.830 回答