2012-01-04 13 views
9

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++

+0

Qual è il tuo "sistema di destinazione". Quale compilatore, quale sistema operativo ?? Chiedi al tuo insegnante le differenze tra 'cmath.h' e' math.h'? È "" o ""? –

+0

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

risposta

18

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++.

+0

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 per altre librerie standard, ma lo lascerò a voi. –

+0

@HarperShelby: mettilo dentro, verso la fine. Spero che il PO legga così lontano, perché questa è una vera e propria lista;) –

+0

L'obiettivo è ottenere buone informazioni là fuori - puoi condurre un cavallo all'acqua e tutto il resto. –