|
|
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Есть структура с разными данными Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Я пишу читаю члены структуры посредством комманд пришедших с терминала. Ну например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. В общем все команды одинаковы за исключением mot_data[arguments[0]-1].член_структуры. Получается одна переменная - одна функция. Для того чтоб написать одну генерик функцию я думал создать указатель на член структуры Код: plaintext 1. 2. 3. 4. 5. 6. и изменять только его в функции. но тут возникает вопрос - получается мне нужна еще одна функция которая тупо переберет 20 (или сколько там членов структуры) кейсов и найдет на какой член структуры указывать. как то получается довольно монструозно и не гибко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:43 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7получается мне нужна еще одна функция которая тупо переберет 20 (или сколько там членов структуры) кейсов и найдет на какой член структуры указывать. Нужна. Думаю по-другому никак не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 16:29 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
таблицу со смещениями можно сгенерировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 16:39 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
я ,s мог засунуть указатель в структуру принятой команды Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. я все равно инициализирую структуру команд. так я добавил бы указатель на переменную Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ситуация несколько усложнилась. у меня мултиаксис поэтому массив структур mot_data[AXIS_NUM] . то есть мне надо инициализировать так .vp = &mot_data[AXIS].pfb проблема что AXIS передается аргументом в команде. абсолютный адрес mot_data+(sizeof(mot_data)*array_index) + struct_member то есть uint8_t *base_ptr = mot_data+(sizeof(mot_data)*array_index) - как мне динамически передать struct_member - base_ptr->struct_member ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:10 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7ситуация несколько усложнилась. у меня мултиаксис поэтому массив структур mot_data[AXIS_NUM] . то есть мне надо инициализировать так .vp = &mot_data[AXIS].pfb проблема что AXIS передается аргументом в команде. Инициализируй указателем на первый элемент Код: plaintext 1. а при использовании смещайся на AXIS * sizeof(mot_data) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:20 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
то есть надо получить в ран тайм mot_data[индекс_пришел_из_команды].переменная_пришла_из_комманды к примеру комманда - pfb 1 1000 => mot_data[1].pfb = 1000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:20 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7ситуация несколько усложнилась. у меня мултиаксис поэтому массив структур mot_data[AXIS_NUM] . то есть мне надо инициализировать так .vp = &mot_data[AXIS].pfb проблема что AXIS передается аргументом в команде. Инициализируй указателем на первый элемент Код: plaintext 1. а при использовании смещайся на AXIS * sizeof(mot_data) а член структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:21 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima Tпропущено... Инициализируй указателем на первый элемент Код: plaintext 1. а при использовании смещайся на AXIS * sizeof(mot_data) а член структуры? ааа. понял. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:23 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7jenya7пропущено... а член структуры? ааа. понял. спасибо. несколько смущает привязка .vp = &mot_data[0].pfb. теряется гибкость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:25 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7jenya7пропущено... ааа. понял. спасибо. несколько смущает привязка .vp = &mot_data[0].pfb. теряется гибкость. pfd имеет свой offset в структуре. нельзя его прибавить? тупо приплюсовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:27 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7несколько смущает привязка .vp = &mot_data[0].pfb. теряется гибкость. Я так понял гибкость не нужна. Если все-таки нужна, то пиши как изначально хотел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:29 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7pfd имеет свой offset в структуре. нельзя его прибавить? тупо приплюсовать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:29 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7pfd имеет свой offset в структуре. нельзя его прибавить? тупо приплюсовать можно. а как тогда будет инициализация? .vp = ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 17:35 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima Tпропущено... можно. а как тогда будет инициализация? .vp = ???? можно было наверно применить offset(структура, член) но я не уверен что offset коректно сработает в IAR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 19:00 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7jenya7пропущено... а как тогда будет инициализация? .vp = ???? можно было наверно применить offset(структура, член) но я не уверен что offset коректно сработает в IAR. то есть offsetof ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 19:03 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
offsetof() должен везде работать. Это часть С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 20:31 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima Tпропущено... можно. а как тогда будет инициализация? .vp = ???? vp должен иметь тип size_t и туда писать что вернет offsetof() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 20:34 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... а как тогда будет инициализация? .vp = ???? vp должен иметь тип size_t и туда писать что вернет offsetof() а он возвращает количество байт от начала? если да то должно быть uint8_t *ptr = mot_data+(sizeof(mot_data)*array_index) + vp так как sizeof это количество байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 21:07 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima Tпропущено... vp должен иметь тип size_t и туда писать что вернет offsetof() а он возвращает количество байт от начала? если да то должно быть uint8_t *ptr = mot_data+(sizeof(mot_data)*array_index) + vp так как sizeof это количество байт. Теоретически все правильно, на практике проверять некогда. Затести. Я бы явное приведение типов добавил Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 21:22 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Дженерики в С реализуются только макросами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 09:56 |
|
||
|
исать читать члены структуры генерик способом. Язык C.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... а он возвращает количество байт от начала? если да то должно быть uint8_t *ptr = mot_data+(sizeof(mot_data)*array_index) + vp так как sizeof это количество байт. Теоретически все правильно, на практике проверять некогда. Затести. Я бы явное приведение типов добавил Код: plaintext 1. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 12:58 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39492557&tid=1340328]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 421ms |

| 0 / 0 |
