Se si fa riferimento a una funzione denominata sqrt
, in che modo il compilatore riconosce il file in cui cercare se non l'ho specificato? Potrebbe essere assolutamente qualsiasi file sul mio intero disco fisso.
A differenza di Java, C++ in realtà non considera alcun file "speciale". Java ha la sua gigantesca libreria di classi, che viene automaticamente resa accessibile al programmatore.
In C++, questo concetto non esiste. Dì al compilatore quali percorsi cercare, e ogni volta che # include un file, cercherà il nome file in quei percorsi.
Se ciò accade per trovare un file di libreria standard, lo utilizzerà. Se capita di trovare un file di terze parti, lo userà.
Il compilatore non sa che sqrt
è definito nell'intestazione math.h
. O che è anche tipicamente definito in cmath
In effetti, le funzioni definite da un'intestazione potrebbero variare. Forse, se # definisco il simbolo del preprocessore appropriato, alcune funzioni verranno rimosse da un'intestazione specifica e altre saranno abilitate.
Ma a differenza di Java, in cui è possibile determinare le funzioni e le classi definite da una libreria semplicemente esaminando i metadati del file della libreria, in C++, l'intestazione deve essere compilata.E il risultato della sua compilazione potrebbe variare a seconda del contesto in cui è incluso.
Quindi il compilatore C++ non può calcolare a quale intestazione deve essere incluso per definire la funzione appena utilizzata.
java funziona con i file di intestazione? – Peter
Sono chiamate istruzioni import – bragboy
L'importazione di Java è più simile a 'using' di C++, non come un' # include'. Le dichiarazioni di importazione – fredoverflow