О ближнем и дальнем говорят в контексте машинной архитектуры (x86, x64, 640kb + модель памяти, x32 в среднем защищенного режима и сегментированный, x86 в терминах сегментированной памяти)
Пример: дана система с 32-битной «длинной» адресацией и 8-битной относительной адресацией. Относительное расстояние учитывает как минимум 127 байтов в прямом (положительном значении) или предыдущем (отрицательном) направлении. Если цель находится на расстоянии 1024 байта, необходимо использовать полный 32-битный указатель.
В настоящее время только адресация x86 x32 - длинный указатель и 64-битная адресация x64 занимают и занимают (постоянное) место. Да, x64 в Windows компилируется MS VC так, как он «видит», все еще как приложение x86 x32 ТОЛЬКО 4 ГБ памяти. Таким образом, вы не знаете по умолчанию разницу между ближним и дальним или какой-либо другой адресацией. НО x64 target имеет возможность обращаться к памяти, используя другой длинный указатель типа long.
Как вы видите, в MS VC нет практического сценария, если вы не «видите» вариант адресации x64 поверх x32 в разных указателях. Просто гипотетика.
Держаться подальше от этого практического использования
LP_STRING - длинный указатель на строку
а также
INT_PTR - целое число, содержащее значение указателя.
Сначала вы должны понять, что ЦП и компилятор принимают набор размеров указателей для использования. И только их. Вы не можете найти способ обойти их без дополнительных компиляторов / компоновщиков / оборудования.
INT_PTR - просто для хранения указателей, длина которых не превышает int (значение указателя, где длина указателя не превышает int).
и LP_STRING - это просто длинный тип указателя компилятора / процессора (они оба, как абстракции, так и компилятор не равны в поведении компилятору, так как x64 может быть Intel редко используется один и широко используется AMD).
ЛЮБОЙ размер переменной может быть указателем.
Вам просто нужен практический пример против AMD x64 и LLP (длинный длинный указатель).