访问阵列时的OpenCL强制转换

访问阵列时的OpenCL强制转换,opencl,Opencl,我正在阅读苹果的OpenCL,注意到有一个宏用于访问数组元素: #define LOAD_GLOBAL_F1(s, i) \ ((__global const float*)(s))[(size_t)(i)] 它是这样使用的: float a = LOAD_GLOBAL_F1(input, i); 其中,input为\u全局常量float*类型,i为size\u t 为什么这里不使用float a=input[i]?谢谢 在本例中,代码不是按照您的建议使用宏编写的。为什么使用宏是任何人的猜测

我正在阅读苹果的OpenCL,注意到有一个宏用于访问数组元素:

#define LOAD_GLOBAL_F1(s, i) \
((__global const float*)(s))[(size_t)(i)]
它是这样使用的:

float a = LOAD_GLOBAL_F1(input, i);
其中,
input
\u全局常量float*
类型,
i
size\u t


为什么这里不使用
float a=input[i]
?谢谢

在本例中,代码不是按照您的建议使用宏编写的。为什么使用宏是任何人的猜测:代码从其他地方重用;基于C语言的内核测试框架;代码作者感觉它提高了可读性;等等,等等。

看起来可能是这样。也许宏是一些需要铸造的东西留下的。