Невозможно сказать, какой смысл использовать (void *)
приведение в этом конкретном случае, не видя больше контекста (как объявляется memcpypgm2ram
?).
В языке C (как и в C ++) типы указателей неявно преобразуются в тип void *
, что означает, что в преобразованиях указателей обычно нет причин использовать явное приведение к типу void *
. Похоже, в вашем примере все преобразования являются преобразованиями указателей, поэтому, принимая во внимание то, что я сказал, явное приведение к void *
не требуется.
Другая возможность, однако, заключается в том, что исходные типы указателей являются const-квалифицированными, поэтому приведение к void *
использовалось для удаления const-квалификации. Однако я не вижу каких-либо постоянных квалификаций в том, что вы предоставили, что означает, опять же, что, скорее всего, приведение к void *
не нужно. Я полагаю, что тот, кто положил его туда, сделал это «на всякий случай» без какой-либо реальной причины.
Короче говоря, приведение (void *)
преобразует указатели в тип void *
. Но так как это преобразование в любом случае произойдет неявно, приведение совершенно не нужно (при условии, что memcpypgm2ram
объявлено с void *
параметрами).