|
C++ Как встроить структуру __flash в класс |
|
|
|
Apr 2 2010, 10:15
|
Местный
  
Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042

|
Есть структура: Код typedef void (*IFunc)(char param);
typedef struct { char Txt1[12]; //Строки сообщений __flash char Txt2[12]; IFunc ItemFunc; //Указатель на функцию обслуживания }Item; и класс Код class MyСlass { private: void ItemFunc1(); void ItemFunc2(); ... void ItemFuncN(); public: Myclass(); ... }; Нужно встроить в класс массив Item Items[N] в этот класс, затруднение вызывает инициализация значений, т.к. массив должен быть __flash. Где и как это должно делаться?
|
|
|
|
|
 |
Ответов
|
Apr 2 2010, 10:38
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ASZ @ Apr 2 2010, 12:15)  Код typedef void (*IFunc)(char param); Не получится. Указатель на функцию отличается от указателя на функцию-член. Цитата(ASZ @ Apr 2 2010, 12:15)  Нужно встроить массив Item Items[N] в этот класс, затруднение вызывает инициализация значений, т.к. массив должен быть __flash. Поскольку этот массив у вас будет один на все объекты этого класса - его надо делать статаческим. А статические члены прекрасно размещаются во флешь. Нестатические члены разместить во флешь нельзя (разве что указатели на них).
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 2 2010, 11:03
|
Местный
  
Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042

|
Цитата Не получится. Указатель на функцию отличается от указателя на функцию-член. И как поступить? Удалить из структуры и вынести в отдельный массив? Цитата Поскольку этот массив у вас будет один на все объекты этого класса - его надо делать статаческим. А статические члены прекрасно размещаются во флешь. Нестатические члены разместить во флешь нельзя (разве что указатели на них). Т.е. функции сделать также статическими? Если не затруднит, то как бы Вы поступили? (Тупой намек на просьбу куска кода  )
|
|
|
|
|
Apr 2 2010, 13:12
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ASZ @ Apr 2 2010, 13:03)  И как поступить? Удалить из структуры и вынести в отдельный массив? Возможно я неясно выразился - для указателя на член семантика записи другая. Непомнящий Евгений показал правильную запись. Цитата(ASZ @ Apr 2 2010, 13:03)  Т.е. функции сделать также статическими? Зачем? Функции могут быть и нестатическими. Мне не приходилось писать подобные вещи, указатели на функции-члены использовал только однажды.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 2 2010, 14:21
|
Местный
  
Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042

|
Цитата(Сергей Борщ @ Apr 2 2010, 16:12)  Возможно я неясно выразился - для указателя на член семантика записи другая. Непомнящий Евгений показал правильную запись. Зачем? Функции могут быть и нестатическими. Мне не приходилось писать подобные вещи, указатели на функции-члены использовал только однажды. Спасибо, буду работать дальше. Почему-то постоянно втыкаюсь именно в семантику... Возможно, из-за неверного (неполного) понимания.
|
|
|
|
|
Apr 3 2010, 07:00
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(ASZ @ Apr 2 2010, 21:21)  Спасибо, буду работать дальше. Почему-то постоянно втыкаюсь именно в семантику... Возможно, из-за неверного (неполного) понимания. Еще иметь в виду, что указатель на член и по имплементации, обычно, отличается от обычного указателя и тащит за собой некоторый оверхед. В лучшем случае он по размеру равен обычному указателю (объекту для хранения адреса), но частенько он раза в три толще (зависит от реализации). Если вас не напрягает, то нормально. Я стараюсь в embedded избегать использования указателей на члены (по вышеуказанной причине).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
ASZ C++ Как встроить структуру __flash в класс Apr 2 2010, 10:15  Непомнящий Евгений Цитата(ASZ @ Apr 2 2010, 14:03) И как пос... Apr 2 2010, 11:57   ASZ Цитата(Непомнящий Евгений @ Apr 2 2010, 14... Apr 2 2010, 12:20    ASZ Спасибо ответившим - все получилось. Apr 2 2010, 22:02     ASZ Цитата(dxp @ Apr 3 2010, 10:00) Еще иметь... Apr 3 2010, 12:41      dxp Цитата(ASZ @ Apr 3 2010, 19:41) Оп-па
П... Apr 3 2010, 14:13       ASZ Цитата(dxp @ Apr 3 2010, 17:13) Посмотрит... Apr 4 2010, 21:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|