Что означает Far в c?

const struct sockaddr FAR* name,

Ответ 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, которые состоят только из:: смещения от текущего сегмента.