c++: ¿Por qué #include no funciona de forma predeterminada en Windows?

CorePress2024-01-25  9

He instalado el compilador mingw-w64 en Windows. Pero usar #include<bits/stdc++.h> en la directiva de preprocesador del programa c++ siempre da un error. ¿Cómo se puede solucionar esto?

5

¿Al no usar eso? c++: ¿Por qué no debería #incluir <bits/stdc++.h>? - Desbordamiento de pila

- MikeCAT

28 de marzo de 2021 a las 5:06

1

<bits/stdc++.h> no es C++ estándar, no tiene por qué existir.

– mediocrevegetable1

28 de marzo de 2021 a las 5:07

Pero usar #include<bits/stdc++.h> -- ¿De dónde surgió la idea de utilizar este encabezado? Ningún buen libro de C++ tiene esto. ¿O estás intentando aprender C++ de uno de esos programas de "competición de codificación en línea" sitios?

- Paul McKenzie

28 de marzo de 2021 a las 5:08

@PaulMcKenzie: Es una práctica estándar en el mundo competitivo de la programación (velocidad), incluidos libros sobre el mismo. ¡Debo ahorrar esos preciosos segundos de escribir!

- John Zwinck

28 de marzo de 2021 a las 5:13

No puedo esperar hasta que esos sitios pasen a C++ 17. Entonces, todo el tiempo ahorrado al escribir ese encabezado, en muchos casos, provocan errores de compilación en los que el competidor se está rascando la cabeza sobre el problema, perdiendo así tiempo. Especialmente si tienen algún identificador con el nombre del dato

- Paul McKenzie

28 de marzo de 2021 a las 5:15



------------------------------------

bits/stdc++.h no es un archivo de encabezado estándar. Por lo tanto, no se garantiza que funcione excepto con ciertos compiladores específicos. Incluso diferentes versiones del mismo compilador pueden proporcionarlo o no.

Cuando está disponible, bits/stdc++.h simplemente #incluye todos los archivos de encabezado estándar de C++. Esto podría tener sentido para algunos.Alguien que recién comienza en el idioma, por lo que no tiene que preocuparse por determinar qué incluye necesita y cuál no. Pero su uso ralentiza el tiempo de compilación, en ciertos casos puede hacer que el ejecutable sea más grande de lo necesario y (como descubrió) hace que el código no sea portátil.

La única solución a esto es no usarlo y, en su lugar, #incluir solo los encabezados específicos que necesita. Realmente "se supone" que eres un hombre. hacerlo según lo programes; cuando necesita declarar una determinada función en un encabezado, incluye ese encabezado y luego escribe la llamada a la función. Algunos IDE le indicarán qué incluye necesita para cada función.

Pero si ya tienes todo el código escrito, puedes hacer trampa. Simplemente elimine el archivo #include <bits/stdc++.h> línea e intente compilar. Si la compilaciónSi se queja de símbolos faltantes o no definidos, busque en Google el símbolo para averiguar de qué encabezado proviene y #inclúyalo. Enjuague y repita hasta obtener una compilación limpia.

2

Si sigue los pasos del último párrafo, el código se compilará, pero el resultado no es necesariamente portátil. Los encabezados de biblioteca estándar pueden definir otros símbolos que no son necesarios para ese encabezado, por lo que agregar un encabezado podría corregir algunos otros símbolos faltantes. Cuando pasas a un compilador diferente, no estarán definidos ytendrás que agregar más directivas #include.

-Pete Becker

28/03/2021 a las 13:35

@PeteBecker Sí, cosas así son las razones por las que lo llamé "trampa". Pero no creo que sea tan malo, ya que para entonces el OP sabrá cómo buscar archivos de encabezado estándar.

-Parabrisas oculto

28/03/2021 a las 19:11



------------------------------------

El problema es que VS Code no puede encontrar <bits/stdc++.h>. No se incluye donde se incluyen los archivos de encabezados. Entonces solo tenemos para copiar y pegar el archivo stdc++.h en los archivos de encabezado de vscode. Vaya a su directorio MinGw y busque stdc++.h. abra la ubicación de su archivo. Ahora regresa un poco a la carpeta de bits y cópiala. C:\MinGW\lib\gcc\mingw32\6.3.0\include\c++\mingw32

Necesitamos incluir esta carpeta en los archivos de encabezado de vs code.

Ahora vaya a Archivos de programa (x86), abra Microsoft Visual Studio y navegue hasta esta ubicación. C:\Archivos de programa (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include

Ahora pegue su carpeta bin aquí. Actualice el código de Visual Studio y debería funcionar bien

Compartir Seguir editado

3 de enero de 2023 a las 19:48

Respondido al

3 de enero de 2023 a las 19:46

Thrishank 3410

Thrishank 3410

1

1

1 insignia de bronce

3

Es casi seguro que hay mejores maneras de permitir que un compilador o IDE sepa dónde encontrar encabezados del sistema que copiar toda la carpeta.

- Adrian Mole

4 de enero de 2023 a las 6:37

Pero este método funciona perfectamente amigo. Para principiantes como yo será mucho más fácil

- Thrishank 3410

4 de enero de 2023 a las 14:38

"Mucho más fácil" no equivale a "mejor". Si quieres aprender C++, apréndelo correctamente.

- Adrian Mole

4 de enero de 2023 a las 14:40

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare