|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
Есть структура Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Инициализирую Код: sql 1. 2.
Но теперь если я хочу выполнить операцию Код: plaintext 1.
я получаю исключение Error[Pe041]: expression must have arithmetic or pointer type Нужно явно привести к типу Код: plaintext 1.
Но не все переменные 32 бита, есть 16, 8. Как мне универсально преобразовать к нужному типу? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 12:32 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7Но теперь если я хочу выполнить операцию Код: plaintext 1.
я получаю исключение Error[Pe041]: expression must have arithmetic or pointer type Напиши подробно, зачем ты использовал каждый знак в данной операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 12:55 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7, union с разными типами заюзать не судьба или не нравится? (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 12:58 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
alex55555jenya7Но теперь если я хочу выполнить операцию Код: plaintext 1.
я получаю исключение Error[Pe041]: expression must have arithmetic or pointer type Напиши подробно, зачем ты использовал каждый знак в данной операции. Допустим есть генерик Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Как мне заране знать в какой тип преобразовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 13:06 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
kolobok0jenya7, union с разными типами заюзать не судьба или не нравится? (круглый) юнион не будет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 13:09 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7kolobok0jenya7, union с разными типами заюзать не судьба или не нравится? (круглый) юнион не будет работать. опять таки - где я решаю в какого типа сохранить указатель? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 13:11 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7Как мне заране знать в какой тип преобразовать? Никак, обломись. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 13:54 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
Только в С++ можно такое сделать. Либо шаблонами, либо пользовательскими операторами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 14:00 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7Как мне заране знать в какой тип преобразовать? Никак. Указатель это просто адрес в памяти, а тип указателя - как трактовать память по этому адресу (сколько байт и т.д.) Т.е. из void * никак не восстановить исходный тип. Убирай void * или добавляй данные об исходном типе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 19:09 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7...юнион не будет работать. т.е. приводить указатель к нужному типу через юнион - не получиться? кхм... ну что я могу сказать - это из разряда = а мужики и не знали... удачи вам, она вам потребуется (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2019, 22:10 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
Dima Tjenya7Как мне заране знать в какой тип преобразовать? Никак. Указатель это просто адрес в памяти, а тип указателя - как трактовать память по этому адресу (сколько байт и т.д.) Т.е. из void * никак не восстановить исходный тип. Убирай void * или добавляй данные об исходном типе. тогда такой вопрос Код: c# 1. 2.
это компилируется в машинный код. как конвейер формирующий команду знает с каким типом оперировать? есть отдельная команда сложения для каждого типа? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2019, 09:04 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7есть отдельная команда сложения для каждого типа? Есть. Во время компиляции выбирается соответствующая команда. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2019, 09:12 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
Есть структура Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Инициализирую Код: sql 1. 2.
Но теперь если я хочу выполнить операцию Код: plaintext 1.
я получаю исключение Error[Pe041]: expression must have arithmetic or pointer type Это не исключение. Это ошибка компиляции. Нужно явно привести к типу Код: plaintext 1.
Нужно. Но не все переменные 32 бита, есть 16, 8. Как мне универсально преобразовать к нужному типу? Хранить десигнатор хранимого типа, делать по нему switch/if и делать в каждой ветке нужное приведение типа. Ещё совет -- сначала учить язык программирования, потом пытаться на нём что-то писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 12:52 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
kolobok0jenya7, union с разными типами заюзать не судьба или не нравится? (круглый) С union проблема будет такая же. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 12:52 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7Dima Tпропущено... Никак. Указатель это просто адрес в памяти, а тип указателя - как трактовать память по этому адресу (сколько байт и т.д.) Т.е. из void * никак не восстановить исходный тип. Убирай void * или добавляй данные об исходном типе. тогда такой вопрос Код: c# 1. 2.
это компилируется в машинный код. как конвейер формирующий команду знает с каким типом оперировать? есть отдельная команда сложения для каждого типа? Да, есть. Конвеер не знает, и не должен. Компилятор знает типы переменных, обрабатывает их, и должным образом генерирует машинный код, где для реализации операций над разными типами используются соответствующие операции и типу операндов машинные комманды. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 12:55 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
MasterZiv...С union проблема будет такая же. TC не хочется преобразовывать к указателям разных типов, насколько я понимаешь. если заюзать юнион - можно тупо обращаться к нужным типам указателя, без приведение к нужному типу. в чём проблема то? Если хочется аля полиморфизм - то можно передав переменную в нужным типом, заюзать её в качестве указания нужного типа. Тогда вообще всё кашерно получается. это собственно очевидные вещи. (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 13:08 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
kolobok0MasterZiv...С union проблема будет такая же. TC не хочется преобразовывать к указателям разных типов, насколько я понимаешь. если заюзать юнион - можно тупо обращаться к нужным типам указателя, без приведение к нужному типу. в чём проблема то? Так десигнатор всё равно надо делать, и ветвление по него. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 20:32 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
А чего эта тема переехала в "программирование" ??? Я может ВБА учил всю жизь, мне ваши укаказатели не в дугу! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2019, 23:12 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
MasterZiv...Так десигнатор всё равно надо делать, и ветвление по него. и хде тут десигнатор+ветвление? Код: 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.
юзанье типо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ик? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 10:40 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
kolobok0MasterZiv...Так десигнатор всё равно надо делать, и ветвление по него. юзанье типо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ик? во первых третий аргумент rData где то надо хранить. во вторых - *lv.u32v - *rv.u16v; не судьба? значит rData нужно хранить для lv и rv. а если выражение усложниться var1-var2 > var3 - rData нужно хранить и для var3. отжирается куча места. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 12:39 |
|
Работа с void указателями в С
|
|||
---|---|---|---|
#18+
jenya7...во первых третий аргумент rData где то надо хранить. во вторых ... третий аргумент надо хранить там, где Вы и храните Ваш result Код: sql 1.
во вторых....дальше полёт мысли я простите потерял.... в третьих - выше я дал не решение а рыбу, показав что это возможно. код не претендует на красоту или лаконичность. можно дрейфить как в одну так и в другую сторону. удачи вам, она вам потребуется (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 15:05 |
|
|
start [/forum/topic.php?fid=16&msg=39812190&tid=1339945]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 267ms |
0 / 0 |