访问阵列时的OpenCL强制转换
我正在阅读苹果的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]?谢谢 在本例中,代码不是按照您的建议使用宏编写的。为什么使用宏是任何人的猜测
#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语言的内核测试框架;代码作者感觉它提高了可读性;等等,等等。看起来可能是这样。也许宏是一些需要铸造的东西留下的。