2015-11-24 3 views

ответ

6

Это, как представляется, определение жестко запрограммированного векторного адреса для функции (указатель на указатель функции). Он будет специфичен для вашей конкретной внедренной цели, поэтому вам может понадобиться добавить сведения о системе, в которой используется этот код.

Более подробно - видимо, есть функция где-то, что выглядит следующим образом:

unsigned short foo (unsigned short AnalogConfigReg, 
        unsigned short AnalogClockMask) 

и указатель на эту функцию хранится по адресу 0x00502501.

Этот вид вещей иногда называют «крючком», и он, вероятно, позволяет установить определенную пользователем функцию, изменив этот адрес крюка.

7

Избавиться от грязной макро, и вы получите

(unsigned short (**) (unsigned short AnalogConfigReg, 
         unsigned short AnalogClockMask)) 0x00502501 

Какой бросок от целого, представляющий адрес в указатель на указатель на функцию. Как указатель на указатель функции имеет смысл для вашего конкретного случая, я понятия не имею.

Гораздо лучше и более читаемым способ написать то же самое будет:

typedef unsigned short func_t (unsigned short AnalogConfigReg, 
           unsigned short AnalogClockMask); 

(func_t**) 0x00502501 
Смежные вопросы