ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
61774 Топик полностью
ReAl (02.07.2006 12:37, просмотров: 1) ответил Павел В. на Читать внимательно кто будет? :-)) Я же русским языком написал - "надо взять третий лонг.. и он тройку умножает на 4". т.е. длину лонга в байтах. Тройка и есть смещение. Так пойдет? :-))
Я тоже так умею: "а думать перед написанием кто будет?" Ведь тройка у тебя "приводится" к указателю, а не к смещению. Т.е. написано
(* (void(*)()) 3 )(); /* это функция, размещённая по адресу 3 */
А не
(* ( (void(*)()) 0) + 3) )(); /* это - третий вектор в таблице, размещённой по адресу 0 */
Не правда ли? Напиши *(__flash int*)3 = 0; и * ((__flash int*)0 + 3) = 0; и сравни результат. И то, что IAR пошёл на поводу у атмела и алгоритм вычислений для * ((type*)const) в зависимоcти от типа разный - это несколько странно.