ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
125426 Топик полностью
rezident (16.07.2008 21:39, просмотров: 127) ответил Сергей Борщ на "По такой жаре вообще плохо соображается :( " - это верно. Зачем передавать указатели на функции как unsigned int и unsigned long? Их надо передавать как указатели на функцию. А компилятор сам разберется, какой размер выделить под указатель. Это мои
Попробую привести пример. Это пример только для данных. Без передачи указателя на функцию в качестве параметра другой функции. Использую вот такую структуру для передачи параметров в функцию IAP. typedef struct st_IAPparam { unsigned long param[3]; unsigned int result[2]; } st_IAPparam; Прототип функции IAP unsigned int f_IAP(unsigned int cmd, void *pntr); Внутри функции f_IAP void-овый указатель pntr в зависимости от команды интерперетируется по-разному: не используется вообще, используется как указатель на единственную переменную или как указатель на структуру типа st_IAPparam. Вот в последнем случае у меня и непонятки возникают. Надо ли мне param[3] обязательно как unsigned long определять, для случая MSP430X, памятуя о 20-и битном указателе? Пока склоняюсь к упрощению. Поскольку ОЗУ внутри нижнего 64кБ сегмента расположено и моя программа заведомо помещается в этот же сегмент, то нет смысла мутить 20-и битные указатели на данные. Проще выбрать в опциях проекта модель памяти для данных small и не морочиться с ними, работая как с обычными 16-и битными указателями. Ну и с указателями на функции тоже понятно. Компилятор сам выделит 32 бита без напоминаний. Мне, при передаче указателя на функцию, естественно тоже нужно unsigned long для него выделять.