Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
Привет! Никак не соображу, подскажите кто разбирается: Есть задача копирования сложной структуры. По некоторым причинам мне удобно использовать указатели на char для адресации исходного (pf) и приемного (pt) буферов, но в процессе копирования мне приходится некоторые блоки рассматривать не как массив char, а как DWORD, double или более сложные структуры. Копирование организовано как цепочка независимых шагов копирования, по окончании каждого шага pf и pt должны указывать на подлежащие копированию на следующем шаге области структуры. Вот кусок кода для одного из шагов: Код: plaintext 1. 2. 3. 4. 5. где CopyMem копирует определенную часть структуры, после чего я пытаюсь вставить в копию DWORD (соответственно сдвинув указатель), но компилятор не понимает моего желания, говорит что де не lvalue слева от ++. Конечно, можно написать что то вроде ((DWORD*)pt)=PartType;pt+=sizeof(DWORD); но это как то некошерно. Подскажите пожалуйста, можно ли применять к приведенным к другому типу указателям операцию постинкремента и если да, то как правильно записать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:28 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
Извините, не нашел где изменить, там звездочку забыл: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:32 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
iMerlinКонечно, можно написать что то вроде ((DWORD*)pt)=PartType;pt+=sizeof(DWORD); но это как то некошерно. Ну, во-первых, это не работоспособно. Точнее, оно выкинет весьма забавную ошибку когда ты этого меньше всего ждёшь. Если уж писать, то так: Код: sql 1. 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:38 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
Ну, PartType имеет тип DWORD и заморачиваться с вызовом функции ради копирования четырех байт (организация стека, цикла, вывод результата (memcpy же вроде чего то да возвращает?)) крайне нерационально. А что Вы имеете ввиду про ошибку? x64? так DWORD вроде и в африке DWORD, или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2015, 15:46 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
Ладно, жаль конечно, что по сути никто не ответил, воспользовался записью *((DWORD*)pt)=PartType;pt+=sizeof(DWORD); Всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2015, 09:32 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
iMerlin, Ты, вероятнее всего, не с той стороны телеги лошадь привязываешь. Сделай структуру классом, с конструктором копирования и оператором присваивания. Мемберы просто присваивай, а заботиться об оптимальности оставь компилятору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2015, 10:26 |
|
||
|
модификация приведенного указателя
|
|||
|---|---|---|---|
|
#18+
iMerlinНу, PartType имеет тип DWORD и заморачиваться с вызовом функции ради копирования четырех байт (организация стека, цикла, вывод результата (memcpy же вроде чего то да возвращает?)) крайне нерационально. ... или я ошибаюсь? Ошибаешься. Функции могут встраиваться, и это очень эффективно. Про DWORD ты тоже ошибаешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2015, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39113280&tid=2018711]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 178ms |

| 0 / 0 |
