const struct sockaddr FAR* name,
Что означает Far в c?
Ответ 1
Это старое расширение с эпохи сегментированных архитектур памяти. Это в основном означает "это указатель, который должен быть способен указывать на любой адрес, а не только на вещи в том же сегменте, что и на его код".
Подробнее или на странице wikipedia.
Ответ 2
far
ничего не значит в C. Проверьте C99 standard [PDF] и посмотрите, можете ли вы найти упоминание о далеких указатели. Дальнейшие указатели были добавлением, добавленным к компиляторам, нацеленным на архитектуры 8086/80286, чтобы обеспечить поддержку сегментированной модели памяти.
Ответ 3
Если ничего не делает, если вы не используете 16-битный компилятор x86.
Если вы посмотрите в Win32-заголовке WinDef.h(в Visual Studio просто щелкните правой кнопкой мыши слово FAR в источнике и выберите "Перейти к определению", вы увидите, что это макрос, определенный как far
, который, в свою очередь, также является макросом, определяемым как ничто!
Только там можно сделать компиляцию устаревшего источника Win16 как Win32. В 16-разрядных компиляторах x86 far
было ключевым словом для компилятора для поддержки указателей seg:: offset, которые разрешают 20-битный адрес (16-разрядное x86 только имело адресное пространство 1 Мб!). Они отличаются от 16-битных указателей near
, которые состоят только из:: смещения от текущего сегмента.