Nella libreria standard (glibc) vedo le funzioni definite con i trattini di sottolineatura doppio iniziali, come in sys/mman.h
. Qual è lo scopo? E come possiamo ancora chiamare una funzione mmap
che non sembra essere dichiarata da nessuna parte. Voglio dire che includiamo sys/mman.h
per quello, ma sys/mman.h
non dichiara mmap
, dichiara solo __mmap
.Significato di doppia sottolineatura all'inizio
risposta
Da manuale di GNU:
Oltre ai nomi documentati in questo manuale, nomi riservati comprendono tutti gli identificatori esterni (funzioni globali e variabili) che iniziano con un carattere di sottolineatura ('_') e tutti identificatori indipendentemente dall'uso che iniziano con due trattini bassi o un trattino basso seguito da una lettera maiuscola sono nomi riservati. In questo modo la libreria e i file di intestazione possono definire funzioni, variabili e macro per scopi interni senza rischio di conflitto con i nomi nei programmi utente.
Questa è una convenzione utilizzata anche dai fornitori C e C++.
I nomi con doppio trattino di sottolineatura principale sono riservati per uso interno dall'implementazione (compilatore/libreria standard/ecc.). Non dovrebbero mai apparire nel tuo codice. Lo scopo di questo spazio dei nomi riservato è di fornire i nomi delle intestazioni di sistema che possono utilizzare senza potenzialmente interferire con i nomi utilizzati nel programma.
Mi piace la tua risposta che è gentile con me. –
ISO 9899: 2011
7.1.3 identificatori riservati
Ogni intestazione dichiara o definisce tutti gli identificatori elencati nel suo sottoclausola associato e opzionalmente dichiara o definisce identificatori elencati nella sua libreria futuro associato indicazioni del subclauso e identificatori che sono sempre riservati per qualsiasi uso o per uso come identificatori dello scope di file .
- Tutti gli identificatori che iniziano con un carattere di sottolineatura e sia una lettera maiuscola o nell'altro sottolineatura sono sempre riservato per qualsiasi uso.
- Tutti gli identificatori che iniziano con un sottolineatura sono sempre riservati per l'uso come identificatori con ambito di file in entrambi gli spazi dei nomi ordinari e tag.
- 1. di Django doppia sottolineatura
- 2. Doppia sottolineatura in CakePHP 2.0
- 3. Python doppia sottolineatura pressare
- 4. significato di sottolineatura su iniettabili in angolare
- 5. Che cosa significa la doppia sottolineatura nelle importazioni di Scala?
- 6. singola e doppia sottolineatura differenza nel dichiarare @synthesize
- 7. DBPedia: qual è il significato di "__1" (caratteri di sottolineatura doppio) negli URI?
- 8. Qual è il significato dei caratteri di sottolineatura iniziali e finali negli identificatori del kernel Linux?
- 9. Qual è il significato dei principali caratteri di sottolineatura in un costruttore C++?
- 10. come rimuovere il carattere di sottolineatura dai valori di textarea?
- 11. Come creare una doppia sottolineatura puntata per il testo in css
- 12. Haskell monade: IO [Doppia] a [IO Doppia]
- 13. Doppia iterazione di lista
- 14. Doppia ereditarietà di enable_shared_from_this
- 15. Notepad ++ con tag di sottolineatura
- 16. comprensione di sottolineatura del isNaN
- 17. XStream e caratteri di sottolineatura
- 18. problema di doppia parentesi bash
- 19. Doppia somma efficiente di prodotti
- 20. Barra di navigazione doppia indesiderata
- 21. doppia sottrazione questione di precisione
- 22. esempio di educazione doppia ricorsiva
- 23. significato di @ (#) caratteri
- 24. Significato di "." in printf
- 25. Significato di !! javascript
- 26. funzione di richiamata significato
- 27. (python) significato di st_mode
- 28. Il significato di "EiC"
- 29. Significato di {*; } In ProGuard
- 30. Cosa significa questa sottolineatura in Swift?
Double underscore: http://stackoverflow.com/questions/224397/why-do-people-use-double-underscore-so-much-in-c (la domanda dice C++, ma '__' è anche dallo standard ANSI C). Anche nella mia versione di 'sys/mman.h',' mmap' è definito. – birryree
'__mmap' non è dichiarato da nessuna parte da glibc. Non ho idea di cosa stai parlando. –
Stai guardando le intestazioni del kernel, non le intestazioni glibc? –