2013-03-27 14 views
7

Quali sono le considerazioni per includere il primo anziché il secondo in un programma C++? Includo sempre math.h, stdlib.h e mai cmath, cstdlib ecc. Non capisco la ragione per cui anche quest'ultimo esiste, qualcuno potrebbe per favore illuminarmi?#include <cmath> vs #include <math.h> in un programma C++

+0

Il duplicato contrassegnato risponde esattamente alla domanda. –

+0

Eventuali duplicati più pertinenti di quelli già elencati: http://stackoverflow.com/questions/8734230/math-interface-vs-cmath-in-c –

+0

@ChrisWhite: infatti. Grazie. –

risposta

19

Preferire includere le intestazioni <c ...>. Sono intestazioni di libreria standard C++. Le intestazioni sono <... .h> intestazioni definite dalla libreria standard C:

libreria standard Il C++ mette a disposizione le strutture della libreria standard C anche, opportunamente regolato per garantire la sicurezza di tipo statico.

Le intestazioni C++, per la maggior parte, hanno un contenuto identico ai corrispondenti intestazioni di libreria C, tranne che i nomi sono tutti definiti nel std namespace.

eccezione di quanto indicato nelle Clausole 18 attraverso 30 e l'allegato D, i contenuti di ciascuna intestazione cname deve essere uguale a quella del corrispondente dell'intestazione name.h, come specificato nella libreria C standard (1.2) o Unicode C TR, come appropriato, come se per inclusione. Nella libreria standard C++, tuttavia, le dichiarazioni (ad eccezione dei nomi definiti come macro in C) rientrano nell'ambito dello spazio dei nomi (3.3.6) dello spazio dei nomi std. Non è specificato se questi nomi vengono prima dichiarati nell'ambito dello spazio dei nomi globale e vengono quindi immessi nello std dei nomi mediante dichiarazioni-utilizzo esplicite

+0

Quindi non esiste un vero motivo per usare le intestazioni ''? Lo spazio dei nomi 'std' è un inconveniente. –

+5

@VioletGiraffe Forse hai letto male. Ho detto "Preferisci includere le intestazioni' ". Lo spazio dei nomi 'std' ti aiuta a evitare l'inquinamento dei nomi. Anche le intestazioni C++ presentano alcune modifiche che le rendono più utili per C++. –

+0

Non ho letto male. Non vedo un singolo motivo per preferire l'intestazione ''. –