Как переопределить тип переменной? Есть функция int _cdecl my_func(PVOID pBuffer) { PDWORD _pBuffer = (PDWORD)pBuffer; //вот так не годится. Т.к. нужна лишняя переменная. /*можно ли как-то внутри функции переопределить переменную pBuffer, чтобы обращаться к ней как к PDWORD ? */ };
это наверно вообще не в тему PDWORD pdwSize, PDWORD pnProfiles pdwSize Указатель на переменную, содержащую размер буфера, указанный при помощи параметра pBuffer. По возвращению, *pdwSize содержит размер фактически используемого или необходимого буфера. pnProfiles Указатель на переменную, которая будет содержать, по возвращению, число имен профиля, фактически скопированных в буфер. ................ type PDWord = ^DWord
Может тут что то есть Win32 API Bool _PdFreeBuffer(PDWORD pBuffer, PDWORD pError); http://www.omega.com/manuals/manualpdf/M3833.pdf http://vx.netlux.org/lib/vbp01.html
Никак нельзя, но можно проверить после билда идой, и с большой вероятностью окажется что все оптимизировано и лишней переменной не будет =)
_pDword[1] - обращение к первому байту, а не дворду. Как решить эту проблему? Я ведь не просто так ее переопределяю. Мне нужно работать с этой переменной.
JAPH настоящие программисты считают не "первый, второй, третий...", а "нулевой, первый, второй..." =)
Ничего подобного. При #define _pBuffer ((PDWORD)pBuffer) _pBuffer[1] преобразуется к ((PDWORD)pBuffer)[1] Т.е. указатель приводится к типу укадатель на DWORD, и потом происходит чтение первого дворда. Если нужен первый байт - так и пиши: *((PBYTE)pBuffer+1) Ну или если так как раньше писали - то: Код (Text): #define _pBuffer ((PBYTE)pBuffer) _pBuffer[1];