Разница между FAR и FAR * используется в winsock

Я хотел бы знать разницу между FAR а также FAR * используется в
эта функция от WinSock.

int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR * name, int len);

0

Решение

Вы можете смело игнорировать FAR ключевые слова, так как они больше не используются.

Давным давно во времена Win16 существовало 16 битных указателей (NEAR) и 32-битные указатели (FAR). Их обработка была другой и в некоторых случаях не простой. С начала Win32 эта разница исчезла. Win64 также не использует модель сегментированной памяти.

В то же время на аппаратном уровне сегменты все еще присутствуют в архитектуре Intel. Но эти детали полностью скрыты от программистов пользовательского режима (а также от разработчиков драйверов режима ядра) Windows.

Вы можете все еще найти эти ключевые слова в заголовочных файлах, потому что они никому не вредят.

4

Другие решения

В обоих случаях они изменяют размер указателей, когда этот код используется в модели с сегментированной памятью. const struct sockaddr FAR * name говорит, что имя будет 32-битным указателем. int PASCAL FAR connect говорит, что любой указатель на функцию соединения будет 32-битным указателем. Альтернатива будет NEAR что означало бы, что указатели 16-битные.

Но никто не использовал сегментированные модели памяти начиная с Windows 3.1. Они такие старые, что я даже не уверен, что использую правильную терминологию. Они настолько стары, что я держу пари, что больше половины постоянных клиентов здесь никогда не услышат о них. Поэтому я могу с уверенностью сказать, что вы можете игнорировать любое использование FAR, просто притворяться, что его не существует.

Где ты это видел?

3

По вопросам рекламы [email protected]