powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / "(DWORD) (LPVOID)" - ?
13 сообщений из 13, страница 1 из 1
"(DWORD) (LPVOID)" - ?
    #33531643
blah blah blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть строчка в коде программы, работающей с железом (API интерфейс) -
mciSendCommand(0, MCI_OPEN, flags, (DWORD) (LPVOID)& mciOpenParms).
Я вообще понимаю так - mciSendCommand - функция, "0, MCI_OPEN, flags" - параметры функции, mciOpenParms - тип переменной отпределяемой пользователем.
Вопрос - что такое "(DWORD) (LPVOID)"?
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33531664
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(DWORD) (LPVOID)&mciOpenParms - это адрес переменнной mciOpenParms через ж.. приведенный к типу DWORD
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33531697
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего функция принимает указатель на параметры в виде 32-битного int. Для того, чтобы синтаксически грамотно передать типизированный указатель используется двойное приведение типов.
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33531699
blah blah blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. параметр LPVOID показывает адрес в памяти? А DWORD - переводит в текст значение адреса? И почему через ж*** ? :)
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33531704
blah blah blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вообще c VB работаю, так что особо не бейте за незнание :)...
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532004
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятно зачем к LPVOID сначала приводить?
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532016
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LPVOID - это тип "указателя на ничто". :-) не удивляйтсь. в C++ есть такой тип данных "void", который означает примерно "пусто". В различных контекстах он интерпретируется немного по разному.
В данном случае LPVOID - это void*, что означет указатель на нечто в памяти, чей тип не определен. Такой трюк используется для передачи указателей в случаях, когда есть проблема приведения типов, а программист точно знает, что типы приводятся.
Переменная с типом LPVOID имеет размер 32 бит. Те (LPVOID)& mciOpenParms физически просто 32 бита
Конструкция (DWORD) просто говорит компилятору интерпретировать LPVOID как DWORD, те int32.
никакого перевода в текст нет.

те &mciOpenParms - это 32 бит
(DWORD) (LPVOID)& mciOpenParms) - это те же самые 32 бит, с тем же значением и размещением в памяти.
(DWORD) (LPVOID) - это просто возня с компилятором
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532022
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to _Балтика:
Возможно для наглядности
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532118
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
saintLPVOID - это тип "указателя на ничто". :-) не удивляйтсь. в C++ есть такой тип данных "void", который означает примерно "пусто". В различных контекстах он интерпретируется немного по разному.
В данном случае LPVOID - это void*, что означет указатель на нечто в памяти, чей тип не определен. Такой трюк используется для передачи указателей в случаях, когда есть проблема приведения типов, а программист точно знает, что типы приводятся.
Переменная с типом LPVOID имеет размер 32 бит. Те (LPVOID)& mciOpenParms физически просто 32 бита
Конструкция (DWORD) просто говорит компилятору интерпретировать LPVOID как DWORD, те int32.
никакого перевода в текст нет.

те &mciOpenParms - это 32 бит
(DWORD) (LPVOID)& mciOpenParms) - это те же самые 32 бит, с тем же значением и размещением в памяти.
(DWORD) (LPVOID) - это просто возня с компилятором
Не надо нас тут за лохов дежать :) Знаем что такое LPVOID. Просто непонятно зачем зачем LPVOID ставить в этом контексте?
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532151
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БалтикаНе надо нас тут за лохов дежать
упаси господь, бог с Вами. :-)
Я это для страждущего писал.
Приоткрыл, так сказать, таинства языка богов иноверцу.
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33532793
rustem5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну не совсем для наглядности
Представьте если это на ++ а не на С просто
Приведение типов в С++ ...
А так ну ms стиль какаято смесь ++ и просто
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33533681
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rustem5Ну не совсем для наглядности
Представьте если это на ++ а не на С просто
Приведение типов в С++ ...
А так ну ms стиль какаято смесь ++ и просто

А ++ вообще не приветствует конвертацию типов. Оно там оставлено для совместимости с С
...
Рейтинг: 0 / 0
"(DWORD) (LPVOID)" - ?
    #33538245
rustem5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Оно там оставлено для совместимости с С
В общем да и не да
Изв что немного размыто ответил (вопрос думал давно в faq)
в (DWORD)(LPVOID)&mciOpenParams ()() абсолютно необходимы
1. Множественное наследование в ++ // struct : a,b {} mciParams
(врядли судя только по названию переменной, не грозит)
2. Переопределение & (тоже не грозит)
3. а (DWORD)(LPVOID) достаточно будет в будущем?
LPVOID == (void*) покажет туда куды следует?
вспомните 16 бит и ss:var и ds:var
как сейчас делят 32 бита адресного пр.?
какой нибуть интерпретатор , activex ... отмапирует пару файлов по Г и приплыли, всегото 4 фильма
4. Ченибудь еще
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / "(DWORD) (LPVOID)" - ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]