¿Por qué no puede encontrar g ++ iostream.h?

Estoy tratando de entender cómo comstackr progtwigs C ++ desde la línea de comandos usando g ++ y (eventualmente) Clang en Ubuntu.

Encontré una página web que explica MakeFiles y estoy siguiendo sus instrucciones. http://mrbook.org/tutorials/make/

Descargué los cuatro archivos de ejemplo en su propio directorio.

  • main.cpp
  • hello.cpp
  • factorial.cpp
  • funciones.h

Luego seguí adelante y ejecuté su ejemplo de cómo comstackr manualmente sin un MakeFile.

g++ main.cpp hello.cpp factorial.cpp -o hello 

Cuando ejecuté el comando desde arriba, recibí el siguiente error de g ++:

 main.cpp:1:22: fatal error: iostream.h: No such file or directory comstacktion terminated. hello.cpp:1:22: fatal error: iostream.h: No such file or directory comstacktion terminated. 

Mi única experiencia con la escritura de c ++ es usar un IDE como VS C ++ Express o CodeBlocks. ¿No se supone que el comstackdor sabe qué es iostream.h y dónde encontrarlo?

¿Cómo me deshago de este error para que el progtwig compile?

Gracias por cualquier ayuda.

Antes de que el lenguaje C ++ fuera estandarizado por ISO, el archivo de encabezado se llamaba , pero cuando se lanzó el estándar C ++ 98, se renombró a solo (sin el .h ). Cambie el código para usar #include y debería comstackrse.

También necesitará agregar un using namespace std; statement a cada archivo de origen (o prefija cada referencia a una función / objeto iostream con un especificador std:: , ya que los espacios de nombres no existían en el C ++ preestandarizado. C ++ 98 puso las funciones y los objetos de la biblioteca estándar dentro del std nombres estándar.

nunca ha sido un encabezado estándar de C ++, porque no lo convirtió en el estándar de C ++.

En cambio, obtuvimos , en 1998.

Manténgase alejado del material didáctico utilizando material no estándar como o void main .

Sin embargo, como una solución práctica para su código pre-estándar actual, puede intentar reemplazar

 #include  

con

 #include  using namespace std; 

No se garantiza que funcione, pero es probable que funcione.

Otro problema relacionado que no se mencionó aquí, por lo que lo incluiré para futuras referencias, es que desde la línea de comandos el comstackdor necesita la variable de ruta de entorno actualizada para encontrar la ubicación de los archivos de cabecera de c ++. En Windows, puede actualizar el entorno de ruta utilizando la GUI de “propiedades avanzadas del sistema” y agregar la ubicación de los archivos de inclusión de c ++. Esto actualizará automáticamente la variable de entorno PATH en Windows cmd y Cygwin al reiniciar el shell.

Para actualizar su PATH desde Linux o el tipo de shell Cygwin … PATH = $ PATH: / your_path_here Ejemplo: PATH = $ PATH: /cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include / c ++ También es una buena idea agregar solo el directorio de inclusión también: RUTA = $ RUTA: /cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include/ … o verificar el correcto directorios para la ubicación de los archivos de inclusión de su instalación, recomiendo instalar mingw para su uso con Cygwin, que se envuelve con g ++.

Para instalar paquetes adicionales necesarios en Cygwin, vuelva a ejecutar la utilidad de instalación de Cygwin y compruebe la instalación desde Internet para agregar paquetes de repositorys web y agregar mingw-gcc-g ++ y mingw-binutils. Para comstackr: g ++ hello.cpp -o hola

Si utiliza la utilidad gcc, en su lugar, compile con el comando: gcc hello.cpp -o hello -lstdc ++ … para obtener su ejecutable.

Siempre que tenga instalado gcc o mingw y la ruta de acceso a los archivos de inclusión de c ++ esté en su variable de entorno de ruta, los comandos funcionarán.