|
|
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
Есть строчка в коде программы, работающей с железом (API интерфейс) - mciSendCommand(0, MCI_OPEN, flags, (DWORD) (LPVOID)& mciOpenParms). Я вообще понимаю так - mciSendCommand - функция, "0, MCI_OPEN, flags" - параметры функции, mciOpenParms - тип переменной отпределяемой пользователем. Вопрос - что такое "(DWORD) (LPVOID)"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:05 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
(DWORD) (LPVOID)&mciOpenParms - это адрес переменнной mciOpenParms через ж.. приведенный к типу DWORD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:09 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
скорее всего функция принимает указатель на параметры в виде 32-битного int. Для того, чтобы синтаксически грамотно передать типизированный указатель используется двойное приведение типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:15 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
Т.е. параметр LPVOID показывает адрес в памяти? А DWORD - переводит в текст значение адреса? И почему через ж*** ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:15 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
Я вообще c VB работаю, так что особо не бейте за незнание :)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 15:17 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
Не понятно зачем к LPVOID сначала приводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:31 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
LPVOID - это тип "указателя на ничто". :-) не удивляйтсь. в C++ есть такой тип данных "void", который означает примерно "пусто". В различных контекстах он интерпретируется немного по разному. В данном случае LPVOID - это void*, что означет указатель на нечто в памяти, чей тип не определен. Такой трюк используется для передачи указателей в случаях, когда есть проблема приведения типов, а программист точно знает, что типы приводятся. Переменная с типом LPVOID имеет размер 32 бит. Те (LPVOID)& mciOpenParms физически просто 32 бита Конструкция (DWORD) просто говорит компилятору интерпретировать LPVOID как DWORD, те int32. никакого перевода в текст нет. те &mciOpenParms - это 32 бит (DWORD) (LPVOID)& mciOpenParms) - это те же самые 32 бит, с тем же значением и размещением в памяти. (DWORD) (LPVOID) - это просто возня с компилятором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:33 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
to _Балтика: Возможно для наглядности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:34 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
saintLPVOID - это тип "указателя на ничто". :-) не удивляйтсь. в C++ есть такой тип данных "void", который означает примерно "пусто". В различных контекстах он интерпретируется немного по разному. В данном случае LPVOID - это void*, что означет указатель на нечто в памяти, чей тип не определен. Такой трюк используется для передачи указателей в случаях, когда есть проблема приведения типов, а программист точно знает, что типы приводятся. Переменная с типом LPVOID имеет размер 32 бит. Те (LPVOID)& mciOpenParms физически просто 32 бита Конструкция (DWORD) просто говорит компилятору интерпретировать LPVOID как DWORD, те int32. никакого перевода в текст нет. те &mciOpenParms - это 32 бит (DWORD) (LPVOID)& mciOpenParms) - это те же самые 32 бит, с тем же значением и размещением в памяти. (DWORD) (LPVOID) - это просто возня с компилятором Не надо нас тут за лохов дежать :) Знаем что такое LPVOID. Просто непонятно зачем зачем LPVOID ставить в этом контексте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:58 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
БалтикаНе надо нас тут за лохов дежать упаси господь, бог с Вами. :-) Я это для страждущего писал. Приоткрыл, так сказать, таинства языка богов иноверцу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 17:05 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
Ну не совсем для наглядности Представьте если это на ++ а не на С просто Приведение типов в С++ ... А так ну ms стиль какаято смесь ++ и просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 00:56 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
rustem5Ну не совсем для наглядности Представьте если это на ++ а не на С просто Приведение типов в С++ ... А так ну ms стиль какаято смесь ++ и просто А ++ вообще не приветствует конвертацию типов. Оно там оставлено для совместимости с С ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 12:15 |
|
||
|
"(DWORD) (LPVOID)" - ?
|
|||
|---|---|---|---|
|
#18+
>>Оно там оставлено для совместимости с С В общем да и не да Изв что немного размыто ответил (вопрос думал давно в faq) в (DWORD)(LPVOID)&mciOpenParams ()() абсолютно необходимы 1. Множественное наследование в ++ // struct : a,b {} mciParams (врядли судя только по названию переменной, не грозит) 2. Переопределение & (тоже не грозит) 3. а (DWORD)(LPVOID) достаточно будет в будущем? LPVOID == (void*) покажет туда куды следует? вспомните 16 бит и ss:var и ds:var как сейчас делят 32 бита адресного пр.? какой нибуть интерпретатор , activex ... отмапирует пару файлов по Г и приплыли, всегото 4 фильма 4. Ченибудь еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 20:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33531664&tid=2031963]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
3ms |
| others: | 222ms |
| total: | 376ms |

| 0 / 0 |
