const struct sockaddr FAR* name,
Respuesta
Es una antigua extensión de la era de las arquitecturas de memoria segmentadas. Básicamente significa que "este es un puntero que debe poder apuntar a cualquier dirección, no solo a las cosas del mismo segmento que el código que lo usa".
Ver más o en el wikipedia page.
¿Entonces es inútil hoy? – ollydbg
prácticamente, a menos que NECESITES escribir código de 16 bits por algún motivo curioso (que en realidad es realmente muy raro). Inútil para personas normales. – TomTom
En algunas otras plataformas, pueden aparecer punteros cercanos y lejanos (no exactamente con el mismo significado), por lo que si realiza una compilación cruzada, puede tener que lidiar con ella. – Vovanium
far
no significa nada en C. Consulte el C99 standard [PDF] y vea si puede encontrar una mención de los punteros lejanos. Los puntos lejanos fueron una extensión añadida a los compiladores que apuntan a las arquitecturas 8086/80286 para proporcionar soporte para el modelo de memoria segmentada.
Si nada a menos que esté usando un compilador x86 de 16 bits.
Si mira en el encabezado Win32 WinDef.h (en Visual Studio, simplemente haga clic derecho en la palabra FAR en el origen y seleccione "Ir a definición", verá que es una macro definida como far
, que a su vez también es una macro definida como nada!
Está solo allí para permitir la compilación de la fuente Win16 heredada como Win32. En compiladores x86 de 16 bits, far
era una palabra clave de extensión del compilador para admitir punteros seg :: offset que resuelven a una dirección de 20 bits (¡16 bit x86 solo tenía un espacio de direcciones de 1Mb!). Son distintos de los punteros de 16 bit near
que solo comprendían el desplazamiento :: del segmento actual.
Varias otras plataformas también tienen punteros cercanos y lejanos. AVR por ejemplo. – Vovanium
@Vovanium: ¿Puede proporcionar una citación? El compilador GNU AVR ciertamente no admite las palabras clave 'far' o' near'. El compilador de GNU para el MeP de Toshiba tiene 'near' y' far' sin embargo, pero no por el mismo motivo arquitectónico que el modo real x86. Entonces, sí, algunas arquitecturas aún requieren extensiones para abordar diferentes espacios de memoria; no solo 'cerca' y' lejos'. Las arquitecturas y DSP de Harvard suelen requerir extensiones. – Clifford
IAR tiene especificadores de almacenamiento pequeños, cercanos, lejanos y grandes (mira http://supp.iar.com/FilesPublic/SUPPORT/000373/memoryusage.pdf) Y sí, los especificadores de tamaño de puntero pueden no ser los mismos que los x86. – Vovanium
- 1. ¿Qué significa '??' significa en C#?
- 2. ¿Qué significa ~ en C++?
- 3. ¿Qué significa ** en C
- 4. ¿Qué significa "&" en C++?
- 5. ¿Qué significa :: en C++?
- 6. ¿Qué significa [,] en C#?
- 7. ¿Qué significa :: :: en C++?
- 8. ¿Qué significa^= en c/C++?
- 9. ¿Qué significa "para (;;)" en C#?
- 10. ¿Qué significa '?' hacer en C++?
- 11. ¿Qué significa "var" en C#?
- 12. ¿Qué significa "() =>" en C#?
- 13. ¿Qué significa -> en C++?
- 14. ¿Qué significa "clase:" en C++?
- 15. ¿Qué hace? en C significa?
- 16. ¿Qué significa/*! */Mean en C#?
- 17. ¿Qué significa "= 0" en C++?
- 18. ¿Qué significa #pragma en C?
- 19. ¿Qué significa (vacío **) en C?
- 20. ¿Qué significa EPS en C?
- 21. ¿Qué significa() => en C#?
- 22. ¿Qué significa cmd/C?
- 23. qué significa global :: C#
- 24. ¿Qué significa \ x en c/C++?
- 25. ¿Qué tan lejos debe aplicar TDD?
- 26. ¿Qué tan lejos puedo ir con JavaScript?
- 27. ¿Qué tan lejos llega Dependency Injection?
- 28. ¿Qué significa este código C++?
- 29. C - ¿Qué significa esta línea?
- 30. ¿Qué significa esta declaración C?
Significa que tengo a Bill Gates en espera y él quiere hablar contigo sobre que su "640k será suficiente para cualquier persona" en los años ochenta. –