(Hasta donde yo sé) C ++ no acepta la extensión ".h" en los archivos de encabezado (ya que generalmente no está presente en otras declaraciones de inclusión), entonces, ¿cómo funciona la inclusión <bits/stdc++.h> en C ++ y por qué esto tiene la extensión ".h"?

-2
fly_high 4 dic. 2020 a las 14:12

3 respuestas

La mejor respuesta

C ++ no usa la extensión .h para los encabezados de biblioteca estándar nombrados en #include declaraciones .

Pero bits/stdc++.h no es un encabezado estándar, por lo que las convenciones de nomenclatura de bibliotecas estándar no se aplicarían a él. De todos modos, nunca debe usarse.

No hay una asignación obligatoria, IIRC, desde el nombre utilizado en la declaración de inclusión hasta el nombre del archivo. Ciertamente puede usar extensiones .h en sus propios encabezados si lo desea, aunque puede resultar confuso si mezcla C y C ++ en un proyecto.

4
Useless 4 dic. 2020 a las 11:18

por qué hay una extensión ".h" en

Porque el desarrollador, que creó el archivo, eligió ese nombre.

Es convencional nombrar encabezados con el sufijo .hy el desarrollador presumiblemente siguió dicha convención.

(Hasta donde yo sé) c ++ no acepta los archivos de encabezado de extensión ".h"

Tu conocimiento es incorrecto. Se acepta cualquier "extensión", incluida la no extensión. No hay limitación sobre cómo se puede nombrar un archivo de encabezado.

Ha etiquetado [c ++ - standard-library], así que agregaré que los encabezados estándar de C ++ se nombran sin sufijo, excepto aquellos heredados de la biblioteca estándar de C que usan el sufijo .h convencional (y que no tienen -alias con sufijo). bits / stdc ++. h no es un encabezado estándar aunque puede ser parte de una implementación de biblioteca estándar.

6
eerorika 4 dic. 2020 a las 11:21

(Hasta donde yo sé) c ++ no acepta los archivos de encabezado de extensión ".h"

Esa es una afirmación incorrecta.

Puede usar cualquier nombre de archivo en esa declaración.

Una vez que el preprocesador haya insertado todos los archivos y el resultado sea un código C ++ válido, no habrá ningún error durante la compilación.

El caso de los encabezados estándar es que los desarrolladores de bibliotecas estándar de C ++ han creado la funcionalidad estándar en archivos sin extensión. Entonces, el nombre del archivo es "vector", por lo que se usa #include <vector>.

Si los desarrolladores agregan un archivo "vector.hpp" (que tiene una instrucción #include <vector> dentro del cuerpo del archivo), entonces debe usarse como #include <vector.hpp>.

2
Robert Andrzejuk 4 dic. 2020 a las 11:50