Que signifie Far en c?

const struct sockaddr FAR* name, 

C’est une ancienne extension de l’ère des architectures de mémoire segmentées. Cela signifie fondamentalement “ceci est un pointeur qui doit pouvoir pointer sur n’importe quelle adresse, pas seulement sur des éléments du même segment que le code qui les utilise”.

Voir plus ou sur la page wikipedia .

far ne veut rien dire en C. Consultez la norme C99 [PDF] et voyez si vous pouvez trouver la mention de pointeurs éloignés. Far pointeurs étaient une extension ajoutée aux compilateurs ciblant les architectures 8086/80286 afin de prendre en charge le modèle de mémoire segmentée.

Si ne fait rien sauf si vous utilisez un compilateur x86 16 bits.

Si vous regardez dans l’en-tête Win32 WinDef.h (dans Visual Studio, cliquez simplement avec le bouton droit de la souris sur le mot FAR dans la source et sélectionnez “Aller à la définition”. Vous verrez qu’il s’agit d’une macro définie aussi far que far qui est également une macro définie comme rien du tout!

C’est uniquement là pour permettre la compilation de sources Win16 héritées en tant que Win32. Dans les compilateurs 16 bits x86, far était un mot clé d’extension du compilateur destiné à prendre en charge les pointeurs seg :: offset qui résolvaient en une adresse de 20 bits (le x86 16 bits ne disposait que d’un espace d’adressage de 1 Mo!). Ils se distinguent des pointeurs near 16 bits qui ne comprenaient que le décalage par rapport au segment en cours.