2012-05-02 16 views
6

Me sorprendería que incluyera stdint.h pero incluye cstdint no.¿Por qué se puede encontrar stdint.h pero cstdint no?

$ aCC sizeof.cpp 
"sizeof.cpp", line 5: error #2005-D: could not open source file "cstdint" 
    #include <cstdint> 
        ^

1 error detected in the compilation of "sizeof.cpp". 
$ aCC --version 
aCC: HP C/aC++ B3910B A.06.12 [Nov 03 2006] 

Es lo mismo con g ++:

$ g++ --version 
g++ (GCC) 4.2.3 

¿Puedo preguntar por qué? Y, ¿tiene algún método para solucionar este problema pero actualizando el compilador? Gracias.

+0

¿Cuál es la diferencia – slartibartfast

+0

¿De dónde viene 'cstdint'? – Gabe

+0

En gcc 4.2.3, puede encontrar '' debajo de tr1 '' –

Respuesta

5

Su compilador es compatible con el antiguo estándar de C++ que no tiene <cstdint> (ya que C90 no tenía <stdint.h>). <cstdint> es nuevo para C++ 11.

+1

Oh, ya veo, gracias. Pero ahora, la pregunta es: ¿por qué c99 admite stdint.h pero la dosis de C++ 03 no es compatible con cstdint? – van

+2

@van: Así es como es. La versión del estándar C al que hace referencia C++ 03 (porque es solo una actualización menor de C++ 98) es/aún era C90. –

+0

@Charles Bailey tiene razón. La última versión de gcc (4.6.3) en mi máquina tiene soporte experimental para C++ 0x y advierte "#error Este archivo requiere compatibilidad de compilador y biblioteca para el próximo estándar ISO C++, C++ 0x. Esta compatibilidad es actualmente experimental y debe ser experimental. estar habilitado con las opciones del compilador -std = C++ 0x o -std = gnu ++ 0x ". – useratuniv

Cuestiones relacionadas