sto utilizzando MS Visual Studio 2012 e in essa, < iostream>
include <istream>
che comprende <ostream>
che comprende <ios>
che comprende <xlocnum>
. <xlocnum>
include <cstdlib>
, in modo che il programma include indirettamente <cstdlib>
Anche se la sequenza delle comprende potrebbe essere diverso in altri compilatori e/o implementazioni, la ragione per cui questo codice viene eseguito è che <iostream>
, direttamente o indirettamente, include <cstdlib>
.
Si noti che le librerie incluse in iostream
sono specifiche dell'implementazione e che il codice potrebbe non essere compilato in qualche altro compilatore. Come regola generale, le librerie che include un file di intestazione non sono in genere ben documentate o parte degli standard, quindi non fare affidamento su include indiretti. Se hai bisogno di una libreria, includila direttamente e, poiché le librerie standard sono include guarded, nessuna significativa overhead verrà applicata alla compilazione o al tempo di esecuzione del tuo programma.
Sembra che 'cstdlib' sia incluso da' iostream'. Questo sembra essere il caso di GCC 4.7.3 almeno. – juanchopanza
La tua domanda sembra essere parte di una generale (errata) comprensione del fatto che quando una documentazione dice "Se fai X, puoi fare Y", assumi che hai la garanzia che non fare X causa un errore. Non è il caso per la maggior parte del tempo. Devi ancora fare X per * provare * che Y è legittimo. –