Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCL API中的类型转换(void*)&;c_mem_obj_Opencl - Fatal编程技术网

OpenCL API中的类型转换(void*)&;c_mem_obj

OpenCL API中的类型转换(void*)&;c_mem_obj,opencl,Opencl,我在OpenCL主机代码的军备列表中遇到了一个奇怪的语法。但是,我的主机代码功能没有任何问题,但对我来说很奇怪,它到底意味着什么,以及它为什么以这种方式传递参数 clSetKernelArg(kernel,0,sizeof(cl_mem),(void*)和c_mem_obj) 据我所知,这是类型转换。我错了吗 我相信它没有任何特殊用途,因为clSetKernelArgAPI已经只接受指针 有一个更专业的解释真的很有帮助 谢谢, jimbo你说得对,这是一个类型演员。它将获取cl\u mem对象(

我在OpenCL主机代码的军备列表中遇到了一个奇怪的语法。但是,我的主机代码功能没有任何问题,但对我来说很奇怪,它到底意味着什么,以及它为什么以这种方式传递参数

clSetKernelArg(kernel,0,sizeof(cl_mem),(void*)和c_mem_obj)

据我所知,这是类型转换。我错了吗

我相信它没有任何特殊用途,因为clSetKernelArgAPI已经只接受指针

有一个更专业的解释真的很有帮助

谢谢,
jimbo

你说得对,这是一个类型演员。它将获取
cl\u mem
对象(类型为
cl\u mem*
)的地址,并将其强制转换为type
void*
(由于clSetKernelArg采用
const void*
,因此它甚至不是最佳强制转换)


它不是必需的。您也可以只编写
clSetKernelArg(kernel,0,sizeof(cl\u mem),&c\u mem\u obj)
并且它应该编译(它适用于我们的代码,在Windows、Mac和Linux上)。

您是对的,它是一个类型转换。它将获取
cl\u mem
对象(类型为
cl\u mem*
)的地址,并将其强制转换为type
void*
(由于clSetKernelArg采用
const void*
,因此它甚至不是最佳强制转换)


这不是必需的。您也可以只编写
clSetKernelArg(kernel,0,sizeof(cl\u mem),&c\u mem\u obj)
并且应该编译它(它适用于我们的代码,在Windows、Mac和Linux上)。

谢谢!!!是的,你是对的。它不用石膏就可以工作。我不明白他们为什么使用这种语法,因为它来自NVIDIA基准测试,所以对我来说更有趣。谢谢!!!是的,你是对的。它不用石膏就可以工作。我不明白他们为什么使用这种语法,因为它来自NVIDIA基准测试,所以对我来说更有趣。