Приведение типов в API OpenCL (void *) & c_mem_obj - PullRequest
0 голосов
/ 14 ноября 2018

Я столкнулся со странным синтаксисом в списке вооружений кода хоста OpenCL.Тем не менее, у меня нет никаких проблем с функциональностью моего кода хоста, но мне странно, что это вообще означает и почему он передает аргументы таким образом.

clSetKernelArg (kernel, 0, sizeof (cl_mem), (void *) & c_mem_obj);

Насколько мне известно, это приведение типа.я ошибся ?

Я полагаю, что это не имеет никакого специального назначения, поскольку API clSetKernelArg уже принимает только указатель.

Очень полезно получить более техническое объяснение.

спасибо, Джимбо

1 Ответ

0 голосов
/ 15 ноября 2018

Вы правы, это тип актерского состава.Он берет адрес вашего cl_mem объекта (тип cl_mem *) и приводит его к типу void * (а поскольку clSetKernelArg принимает const void *, это даже не лучший приведение).

Не требуется. Вы также можете просто написать clSetKernelArg(kernel, 0, sizeof(cl_mem), &c_mem_obj), и он должен скомпилироваться (это делается для нашего кода в Windows, Mac и Linux).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...