У меня есть код, как-Wpedantic неверного типа аргумента для увеличения после литья
while (n--)
{
*((char*)dest++) = *((char*)src++);
}
где dest
и src
являются недействительными указателями и n
размера. Целью является повторная реализация функции memcpy. При компиляции этого кода с gcc все работает отлично, но когда я добавляю флаг -Wpedantic
, у меня есть четыре предупреждения «неправильный аргумент типа для увеличения».
Google сообщает мне, что это происходит при попытке использовать арифметику на указателях void, поскольку gcc рассматривает тип void как 1-байтовый тип в этом случае, но устаревшие компиляторы shoud not. Затем мне нужно наложить указатель на указатель на char, но, как вы видите, я уже сделал это!
Любая идея?
'* (((длинный *) Dest) ++) = * (((длинный *) ЦСИ) ++); ' – mch
Я тоже об этом подумал, но тогда у меня есть ошибка« lvalue, требуемая как операнд приращения » –
, вы можете делать прирост отдельно:' dest = (long *) dest + 1; ' – mch