Знаете, что означает этот код?Что делает этот макрос C?
#define StartEsub (unsigned short (**) (unsigned short \
AnalogConfigReg, \
unsigned short \
AnalogClockMask)) 0x00502501
Знаете, что означает этот код?Что делает этот макрос C?
#define StartEsub (unsigned short (**) (unsigned short \
AnalogConfigReg, \
unsigned short \
AnalogClockMask)) 0x00502501
Это, как представляется, определение жестко запрограммированного векторного адреса для функции (указатель на указатель функции). Он будет специфичен для вашей конкретной внедренной цели, поэтому вам может понадобиться добавить сведения о системе, в которой используется этот код.
Более подробно - видимо, есть функция где-то, что выглядит следующим образом:
unsigned short foo (unsigned short AnalogConfigReg,
unsigned short AnalogClockMask)
и указатель на эту функцию хранится по адресу 0x00502501
.
Этот вид вещей иногда называют «крючком», и он, вероятно, позволяет установить определенную пользователем функцию, изменив этот адрес крюка.
Избавиться от грязной макро, и вы получите
(unsigned short (**) (unsigned short AnalogConfigReg,
unsigned short AnalogClockMask)) 0x00502501
Какой бросок от целого, представляющий адрес в указатель на указатель на функцию. Как указатель на указатель функции имеет смысл для вашего конкретного случая, я понятия не имею.
Гораздо лучше и более читаемым способ написать то же самое будет:
typedef unsigned short func_t (unsigned short AnalogConfigReg,
unsigned short AnalogClockMask);
(func_t**) 0x00502501