Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разница между LPBYTE и PBYTE


Автор: vdm 23.5.2008, 10:18
В чом разница между LPBYTE и PBYTE?

Автор: Rififi 23.5.2008, 10:49
формально - LPBYTE = "дальний" (far) указатель на BYTE, PBYTE - "ближний" (near) указатель на BYTE, практически, с учётом модели памяти в Windows (flat) разницы никакой.

Автор: vinter 23.5.2008, 10:51
а кто знает какой смысл было вводить подобные абривиатуры? это же МСные абривиатуры, хотя уже давно near и far не актуальны.

Автор: Rififi 23.5.2008, 11:07
Тянется как рудимент, оставшийся со времён совместимости Windows 3.1 (Win16). Там это было актуально.

Автор: ama_kid 23.5.2008, 11:08
Цитата(Rififi @  23.5.2008,  10:49 Найти цитируемый пост)
формально - LPBYTE = "дальний" (far) указатель на BYTE, PBYTE - "ближний" (near) указатель на BYTE, практически, с учётом модели памяти в Windows (flat) разницы никакой. 
Я бы сказал, что в 32-разрядной системе даже формально - никакой разницы. Цитата из VC++ 2003.Net:
Код
#define far
#define near
typedef BYTE far            *LPBYTE;
typedef BYTE near           *PBYTE;
Не знаю, как обстоит дело в 64-разрядных системах, не довелось еще познакомиться с ними, но не думаю, что сильно отличается...

Автор: Ln78 23.5.2008, 13:04
Цитата(Rififi @  23.5.2008,  11:49 Найти цитируемый пост)
с учётом модели памяти в Windows (flat) разницы никакой

Не Windows'ом единым жив человек smile
Один и тот же header-файл может использоваться разными компиляторами, и для некоторых из них наличие буквы L (т.е. модификатора far) существенно.
Цитата(vinter @  23.5.2008,  11:51 Найти цитируемый пост)
а кто знает какой смысл было вводить подобные абривиатуры? это же МСные абривиатуры

vinter, думаю, что ты и сам знаешь. Оснований, кроме как из серии "в Гейтса дважды", чем эта аббревиатура (LP) хуже других, я не вижу. 

Автор: Rififi 23.5.2008, 13:13
Цитата(Ln78 @  23.5.2008,  13:04 Найти цитируемый пост)
Не Windows'ом единым жив человек

где-то еще кроме Windows используются типы с названиями LPBYTE, LPCTSTR etc?

Автор: Ln78 23.5.2008, 13:26
Цитата(Rififi @  23.5.2008,  14:13 Найти цитируемый пост)
где-то еще кроме Windows используются типы с названиями LPBYTE, LPCTSTR etc? 

А что мешает написать
Код

typedef BYTE far*           LPBYTE;

и использовать этот тип в заголовочном файле, который будет включаться транслятором VS - для основной части приложения и, например,  Watcom для пре-бут модулей?

Автор: JackYF 23.5.2008, 15:25
Ln78, не понял. Вне WinAPI эти плохочитаемые аббревиатуры не используются вообще - они определены где-то в недрах windows.h.

Автор: Ln78 23.5.2008, 16:35
JackYF, да всё ты понял smile 
Твоя "любовь" к этим удобочитаемым понятным запоминающимся очевидным аббревиатурам известна. Вряд ли это тема достойна дальнейшего продолжения. У каждого свои предрассудки

Автор: JackYF 23.5.2008, 20:13
Я честно не понял вот этого
Цитата(Ln78 @  23.5.2008,  12:26 Найти цитируемый пост)
и использовать этот тип в заголовочном файле, который будет включаться транслятором VS - для основной части приложения и, например,  Watcom для пре-бут модулей? 


Хотя насчёт моей "любви" ты прав  smile. 

Цитата(Ln78 @  23.5.2008,  15:35 Найти цитируемый пост)
Вряд ли это тема достойна дальнейшего продолжения.

В принципе, да smile

Автор: vinter 23.5.2008, 22:29
Цитата(Ln78 @  23.5.2008,  14:04 Найти цитируемый пост)
vinter, думаю, что ты и сам знаешь.

ни разу не задумывался
Цитата(Ln78 @  23.5.2008,  14:04 Найти цитируемый пост)
 Оснований, кроме как из серии "в Гейтса дважды" 

я слишком уважаю этого человека, чтобы так думать .

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)