En la biblioteca estándar (glibc) veo funciones definidas con subrayados dobles iniciales, como __mmap
en sys/mman.h
. ¿Cuál es el propósito? Y ¿cómo podemos llamar a una función mmap
que no parece declararse en ningún lugar? Quiero decir que incluimos sys/mman.h
para eso, pero sys/mman.h
no declara mmap
, declara solo __mmap
.Significado del subrayado doble al comienzo
Respuesta
Desde el manual de GNU:
Además de los nombres documentados en este manual, los nombres reservados incluyen todos los identificadores externos (funciones globales y variables) que comienzan con un guión bajo ('_') y todos los identificadores independientemente del uso que comienzan con dos guiones bajos o un guión bajo seguido de una letra mayúscula son nombres reservados. Esto es para que la biblioteca y los archivos de encabezado puedan definir funciones, variables y macros para fines internos sin riesgo de conflicto con nombres en programas de usuario.
Esta es una convención que también es utilizada por los vendedores C y C++.
Los nombres con guion bajo doble inicial están reservados para uso interno por la implementación (compilador/librería estándar/etc.). Nunca deberían aparecer en tu código. El propósito de este espacio de nombres reservado es darles a los encabezados del sistema los nombres que pueden usar sin potencialmente entrar en conflicto con los nombres utilizados en su programa.
Me gusta su respuesta que es amable conmigo. –
ISO 9899: 2011
7.1.3 identificadores Reservados
Cada cabecera declara o define todos los identificadores que figuran en su subcláusula asociada, y opcionalmente la declara o define identificadores enumerados en su biblioteca futuro asociado instrucciones subcláusula y identificadores que siempre se reservan para cualquier uso o para uso como identificadores de alcance de archivo .
- Todos los identificadores que comienzan con un guión bajo y, o bien una letra mayúscula o en otro guión bajo son siempre reservada para cualquier uso.
- Todos los identificadores que comiencen con un guión bajo de siempre se reservan para usar como identificadores con el alcance del archivo tanto en el espacio ordinario como en el espacio de nombre de etiqueta.
- 1. Doble subrayado en PHP?
- 2. XStream manejo doble subrayado (Java)
- 3. DBPedia: ¿Cuál es el significado de '___1' (subrayado doble) en los URI?
- 4. ¿Cuál es el significado del doble guión bajo ($ _. Valor__)?
- 5. subrayado en la función php
- 6. convirtiendo jdouble al doble del tipo c
- 7. Rendimiento del elenco de size_t al doble
- 8. Necesito escribir al comienzo del archivo con PHP
- 9. mover el cursor al comienzo del campo de entrada?
- 10. individual y la diferencia de subrayado doble en declarar @synthesize
- 11. Cómo crear un subrayado doble, punteado para texto en css
- 12. C#: Antecedente al comienzo de un archivo
- 13. Significado del sufijo U
- 14. Analizando Significado del texto
- 15. Insertar cadena al comienzo de otra cadena
- 16. Mover el cursor al comienzo de UITextField
- 17. Java: utilizar StringBuilder para insertar al comienzo
- 18. Scala: resultado inverso al escapar subrayado con :::
- 19. Significado del texto entre corchetes
- 20. NSString al número doble
- 21. Extracto decimal del comienzo de la cadena
- 22. Dormir hasta el comienzo del próximo minuto
- 23. Significado del símbolo PLSQL "=>"
- 24. Significado del modelo en MVC
- 25. Cambiar el color del subrayado en android
- 26. CSS: Omitir subrayado en parte del enlace
- 27. C++ memcpy del array doble al array flotante
- 28. ¿Cómo funciona la conversión del doble al int en Java?
- 29. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 30. ¿Cuál es el significado de alinear el comienzo de una sección?
Doble guión bajo: http://stackoverflow.com/questions/224397/why-do-people-use-double-underscore-so-much-in-c (la pregunta dice C++, pero el '__' es del estándar ANSI C también). También en mi versión de 'sys/mman.h',' mmap' está definido. – birryree
'__mmap' no está declarado en ningún lado por glibc. No tengo idea de lo que estás hablando. –
¿Está buscando los encabezados kernel, no los encabezados glibc? –