Что Фар означает в c? - PullRequest
       1

Что Фар означает в c?

10 голосов
/ 26 октября 2010
const struct sockaddr FAR* name,

Ответы [ 3 ]

21 голосов
/ 26 октября 2010

Это старое расширение эпохи архитектуры с сегментированной памятью.По сути, это означает, что «это указатель, который должен иметь возможность указывать на любой адрес, а не только на элементы в том же сегменте, что и код, использующий его».1004 *.

4 голосов
/ 26 октября 2010

far ничего не значит на C. Проверьте стандарт C99 [PDF] и посмотрите, сможете ли вы найти упоминание о дальних указателях.Дальние указатели были расширением, добавленным к компиляторам, предназначенным для архитектур 8086/80286, чтобы обеспечить поддержку модели сегментированной памяти.

2 голосов
/ 26 октября 2010

Если ничего не делает , если только вы не используете 16-битный компилятор x86.

Если вы посмотрите в Win32 заголовок WinDef.h (в Visual Studio просто щелкните правой кнопкой мыши слово FAR в источнике и выберите «Перейти к определению», вы увидите, что это макрос, определенный как far, который, в свою очередь, также является макросом, который вообще ничем не определен!

Это только для того, чтобы разрешить компиляцию устаревшего источника Win16 как Win32. В 16-битных компиляторах x86 far было ключевым словом расширения компилятора для поддержки указателей seg :: offset, которые разрешаются в 20-битный адрес (16-битный x86 имел только адресное пространство 1 Мб!). Они отличаются от 16-битных near указателей, которые содержат только :: смещение от текущего сегмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...