При переносе библиотеки я столкнулся со следующей проблемой.Существует определение макроса с аппаратным эквивалентом -
#define PREFETCH(addr) HW_PREFETCH((const volatile void *)addr)
Мне нужно перенести другой макрос PREFETCH_ADDR_OFF (addr, offset) на HW_PREFETCH (addr).Я пытался следовать, но не работает.Есть ли способ выполнить арифметику в макросе c?
#define PREFETCH_ADDR_OFF(addr,offset) PREFETCH(addr+offset)
Ниже приведена ошибка компиляции:
указатель типа 'void *', используемый в арифметике
РЕДАКТИРОВАТЬ - вот что сработало для меня -
#define PREFETCH(addr) HW_PREFETCH(addr)
#define PREFETCH_ADDR_OFF(addr,offset) PREFETCH((((char*)addr)+offset))