RE:Apuntadores near y far C++
Bueno, esto es un pequeña clase de historia ;-).
Los apuntadores "near" y "far" ya están en desuso, y los compiladores de hoy en día rara vez los ocupan. Algunos, como VC, incluyen los #defines sólo por compatibilidad.
La diferencia radica en el tamaño de los apuntadores. En antiguos sistemas, las direcciones de memoria en la RAM eran pequeñas por obvias razones (el tamaño de la RAM misma). En sistemas viejos, usualmente eran de dos bytes. Con ello, podías apuntar a datos "cercanos", es decir, que estuvieran en el rango de dos bytes. Conforme el tamaño de la RAM fué creciendo, en los mismos sistemas viejos, los punteros seguían siendo de dos bytes, pero ahora era necesaria un rango mayor para "apuntar" a las direcciones de memoria más "lejanas", que sobrepasaban los dos bytes. De ahí, se les ocurrió inventar los apuntadores near (cerca) y far (lejos).
Hoy en día, los compiladores no tienen problemas para manejar grandes direcciones en memoria (por ejemplo, en Win32 un proceso de aplicación tiene reservado hasta 4GB en memoria RAM), y por ello ya están en total desuso.