L'interfaccia sul mio sistema di compilazione MacOS 10.6.3 per la libreria matematica POSIX è math.h, tuttavia sul mio sistema di destinazione il nome del file di interfaccia è cmath.h. A scuola usiamo il cmath e vorrei essere sicuro che il mio progetto venga compilato quando viene consegnato, come viene realizzato. I server e le workstation a scuola sono x86 con Windows XP. Il GCC è disponibile su entrambe le piattaforme.Interfaccia matematica vs cMath in C++
risposta
Nello standard C++, le funzioni di libreria matematica sono definiti in due intestazioni:
<cmath>
li contiene nel namespace std
(ad es std::sin
), mentre
<math.h>
li contiene nel mondiale spazio dei nomi (quindi solo sin
).
Vi sono ulteriori differenze tra i due: funzioni mentre <math.h>
contiene tutte le funzioni matematiche C con nomi diversi per tipi distinti, come
double sin(double);
float sinf(float);
long double sinl(long double);
ecc, <cmath>
contiene sovraccaricato come
namespace std {
double sin(double);
float sin(float);
long double sin(long double);
}
ecc. (Le librerie C++ potrebbero inoltre esportare sinf
da <cmath>
, ma non si può fare affidamento su questo in un programma portatile.)
Infine, le funzioni fabs
, fabsf
e fabsl
dalla libreria standard C sono state sovraccaricate di std::abs
in <cmath>
.
Anche se entrambe le intestazioni sono nella norma, si dovrebbe davvero preferisce <cmath>
, come <math.h>
è lì solo per compatibilità con pre-standard C++ e C.
Non esiste una cosa come <cmath.h>
nello standard C++.
OK. Ho rimosso la mia risposta piuttosto che modificarla, dato che hai coperto i bit importanti qui. Penso che sia utile menzionare l'uso dello stile di denominazione
@HarperShelby: mettilo dentro, verso la fine. Spero che il PO legga così lontano, perché questa è una vera e propria lista;) –
L'obiettivo è ottenere buone informazioni là fuori - puoi condurre un cavallo all'acqua e tutto il resto. –
Qual è il tuo "sistema di destinazione". Quale compilatore, quale sistema operativo ?? Chiedi al tuo insegnante le differenze tra 'cmath.h' e' math.h'? È "" o ""? –
Mi spiace, voglio dire che macos è il mio sistema host e Windows XP è il mio sistema di destinazione. E se il mio professore conoscesse la risposta, allora non dovrei chiedere qui. – awiebe