2013-03-11 10 views
48

Si dice che quando si includono i file di intestazione C in C++, il suffisso ".h" deve essere rimosso e quindi aggiungere "c" all'inizio. Ad esempio, #include <cstdio> anziché #include <stdio.h>. Ma quando uso il sleep() nel mio codice, #include <cunistd> non funziona, ma funziona #include <unistd.h>. Perché non <cunistd>?C++ - include unistd.h: perché non cunistd?

risposta

49

L'algoritmo è corretto per la maggior parte degli header standard C (tutti?), Ma unistd.h non fa parte dello standard C, quindi lo standard C++ a sua volta non lo include con le altre intestazioni c....

20

Perché unistd.h non faceva mai parte del linguaggio C. Fa parte del sistema operativo.

10

<unistd.h>, sta per intestazione standard unix, il nome dice tutto.

+2

... è così che dice il nome! –

+16

'unistd' potrebbe anche rappresentare" header standard universale "(mi rendo conto che suona un po 'ridicolo). Il punto è che avrebbero dovuto intitolarlo 'unixstd.h' - chiarezza immediata aggiungendo solo _ un_ carattere. –

2

unistd.h non fa parte dello standard C. Standard C++ lib non lo include con le altre intestazioni c.

Problemi correlati