У меня есть буфер, по сути массив char, заполненный несколькими различными структурами.Структуры должны быть переданы в буфер, как этот, потому что это то, что я читаю / пишу в сокет.Структуры - это одна структура заголовка и, возможно, структуры с «несколькими полезными данными».
Просто для иллюстрации, это выглядит так:
unsigned char buffer[buflen];
struct header *head;
struct payload1 *p1;
struct payload2 *p2;
etc...
Теперь, когда я пытаюсь заполнить этот буфер или получитьиз этого буфера я использовал void *ptr
, где он сначала инициализируется в позиции буфера, а затем в позиции после заголовка, например:
void *ptr;
ptr = &buffer;
ptr += sizeof(header);
Это на самом деле работает нормально - т.е.указатель указывает на правильное расположение в памяти, и я могу получить (или вставить) новую структуру полезной нагрузки, но, тем не менее, он генерирует предупреждение в gcc.warning: pointer of type ‘void *’ used in arithmetic
.
Что я могу сделать, чтобы избежать этого предупреждения в этом случае?