sirve que para namespace dev create c++ include namespaces

que - namespace c++



¿Cuál es la diferencia entre usar#include<filename> y#include<filename.h> en C++? (5)

El #include <foo.h> era común en el código de C ++ antes del estándar de C ++. El estándar lo cambió a #include <foo> con todo, desde el encabezado colocado en el std nombres estándar. (Gracias a Litb por señalar que el estándar nunca ha permitido encabezados .h).

No hay magia, el primero busca un archivo llamado ''foo.h'' y el segundo para un archivo llamado ''foo''. Son dos archivos diferentes en el sistema de archivos. El estándar simplemente cambió el nombre del archivo que debería incluirse.

En la mayoría de los compiladores, los encabezados anteriores todavía existen para compatibilidad con versiones anteriores (y compatibilidad con C), pero los programas modernos de C ++ que quieran seguir el estándar no deberían usarlos.

En el caso de los encabezados C estándar, las versiones C ++ tienen ac al principio, por lo que el encabezado C

#include <stdio.h>

se convierte

#include <cstdio>

¿Cuál es la diferencia entre usar #include<filename> and #include<filename.h > en C ++ ? ¿Cuál de los dos se usa y por qué se usa?


El antiguo estándar usaba la sintaxis #include <filename.h> . Cuando se agregaron espacios de nombres y plantillas al idioma, el estándar se cambió a #include <filename> .

Esto se hizo para que las cosas de la biblioteca estándar pudieran colocarse en el espacio de nombres estándar. El código anterior, que no tenía ningún concepto de espacios de nombres todavía funcionaría, ya que los #include <filename.h> no usan espacios de nombres.

El nuevo código siempre debe usar el formato #include <filename> . Si usa el formato anterior, todos los símbolos que definen se colocarán en el espacio de nombres global en lugar de std.


Los que no tienen .h son archivos de encabezado C ++, mientras que aquellos con .h son archivos de encabezado C. Esto solo se aplica a los archivos de encabezado estándar en C ++.

Si incluye sus propios archivos o archivos que no forman parte de C ++ estándar, siempre debe escribir el nombre completo del archivo (que puede ser cualquier cosa).


Si está hablando de las bibliotecas estándar (porque de lo contrario no funcionará en absoluto), la diferencia es

#include< header > //my code

es la forma correcta de llamar al encabezado de acuerdo con el estándar C ++, mientras

#include< header.h > //my code

está en desuso (en el estándar C ++, pero sigue siendo necesario de acuerdo con el estándar C99) y se sumó al resto del equipaje C.

Entonces deberías usar:

#include< cmath > //my code

no:

#include< math.h > //my code


C ++ solo incluye archivos que no se encuentran en el estándar C nunca usó el filename.h . Desde que salió el primer estándar de C ++ (1998), han utilizado el filename de filename para sus propios encabezados.

Los archivos heredados por C Standard se convirtieron en cfilename lugar de filename.h . Los archivos C heredados utilizados como filename.h están en desuso, pero aún forman parte del estándar C ++.

La diferencia es que los nombres no definidos como macros en C se encuentran dentro del espacio de nombres std:: en cfilename en C ++, mientras que los nombres en filename.h están dentro del alcance del espacio de nombres global. Por lo tanto, encontrará ::size_t en stddef.h, y std::size_t en cstddef. Ambos son Estándar C ++, pero el uso de :: size_t está en desuso (Ver Anexo D del Estándar C ++).

Ahora esa era la diferencia.

¿Por qué usarías `filename.h`?

  • Compatibilidad con compiladores de C
  • Compatibilidad con compiladores de C ++ muy antiguos

¿Por qué debería usar `cfilename`?

  • Los nombres están dentro del espacio de nombres std:: . Ya no hay enfrentamientos de nombres.
  • Nuevas características de C ++ (p. Ej. Funciones matemáticas sobrecargadas para flotación, larga)
  • C Compatibility Headers ( filename.h ) podría desaparecer en el futuro.