Проблема с void * и обобщенной функцией - PullRequest
0 голосов
/ 23 апреля 2011

Я пытаюсь перезаписать элемент (неизвестного размера) «copyHere» с помощью newElement, но у меня возникли проблемы.Я устанавливаю copyHere на фрагмент elementArr, который я хочу перезаписать:

void *copyHere = ((char *)elementArray + (i * elementSize));
copyHere = memcpy(copyHere, *newElement, elementSize);

Я получаю сообщение об ошибке "недопустимое использование выражения void".Как я неправильно использую void * или memcpy?Насколько я понимаю, в memcpy я передаю целевой блок памяти и исходный блок памяти, а также размер источника, который я хочу скопировать.Я сделал это.И для void * copyHere я прошел через elementArray (неизвестного типа, но с известным размером elementSize), чтобы найти блок памяти, который я хочу перезаписать.Любые подсказки?

Ответы [ 2 ]

1 голос
/ 23 апреля 2011

Если newElement имеет тип void, вы не можете использовать * для разыменования. memcpy нужен указатель в любом случае.

1 голос
/ 23 апреля 2011

Удалить * до newElement. Вы не можете (и не должны) разыменовывать указатель void, чтобы передать его в memcpy.

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