2010-02-03 28 views
13

Estoy tratando de ejecutar mi primer programa de C++ en Linux (linux mint 8). Uso gcc o g ++, ambos con el mismo problema: el compilador no encuentra la biblioteca que intento importar.vinculando <iostream.h> en Linux usando gcc

Sospecho que debería copiar el archivo iostream.h (que no sé dónde buscar) en la carpeta de trabajo, mover mi archivo para compilar en otro lugar o usar una opción de algún tipo.

Gracias por sus sugerencias.

Aquí está el comando gcc, el código C++, y el mensaje de error:

gcc -o addition listing2.5.c 

.

#include <iostream.h> 

int Addition(int a, int b) 
{ 
    return (a + b); 
} 

int main() 
{ 
    cout << "Resultat : " << Addition(2, 4) << "\n"; 
    return 0; 
} 

.

listing2.5.c:1:22: error: iostream.h: No such file or directory 
listing2.5.c: In function ‘main’: 
listing2.5.c:10: error: ‘cout’ undeclared (first use in this function) 
listing2.5.c:10: error: (Each undeclared identifier is reported only once 
listing2.5.c:10: error: for each function it appears in.) 

Ahora el código se compila, pero no puedo ejecutarlo desde la línea de comando usando el nombre del archivo. addition: command not found ¿Alguna sugerencia?

+0

¡Sorpresa! Fueron y cambiaron el idioma de maneras incompatibles. Eso fue bueno de ellos. –

+0

@Eric: ¿Quién es "ellos" y qué "cambiaron"? – MSalters

+0

No codigo en C++ con la frecuencia suficiente para saber o cuidar de quién está a cargo de los estándares de C++.Pero una vez tuve la misma experiencia que Morlock, de volver a C++ después de muchos años y descubrir que '# includes' ya no usa' .h' y 'cin' /' cout' fue y se ocultó dentro de 'std ::'. –

Respuesta

22
  • cout se define en el espacio de nombres std ::, es necesario utilizar std::cout en lugar de sólo cout.
  • También debe utilizar #include <iostream> no el viejo iostream.h
  • uso g ++ para compilar programas en C++, que va a enlazar en la biblioteca estándar de C++. gcc no lo hará. gcc también compilará su código como código C si le da un sufijo .c. Dale a tus archivos un sufijo .cpp.
+0

Gracias por su respuesta. Supongo que revisaré el libro de 2000 con el que estoy aprendiendo. :) – Morlock

+0

Hum, el archivo "agregado" creado no funciona. Intento usarlo desde la línea de comando, escribiendo: además, pero dice "comando no encontrado". También intenté hacer clic en él y no aparece ningún terminal. ¿Cómo podría hacerlo funcionar? – Morlock

+1

El directorio actual no está en su camino. Pruebe './Addition' – caf

3

Necesita <iostream>, <iostream.h> es un encabezado demasiado viejo y no estándar. Prueba esto:

#include <iostream> 

int Addition(int a, int b) 
{ 
    return (a + b); 
} 

int main() 
{ 
    using namespace std; 
    cout << "Resultat : " << Addition(2, 4) << "\n"; 
    return 0; 
} 
5

Usted necesita <iostream> no <iostream.h>.

También son archivos de encabezado, no bibliotecas.

Otras cosas que arreglar, cout debería ser std::cout y se debe utilizar en lugar de std::endl"\n".

+4

No, usar' "\ n" 'es mejor. Creo que sabe que 'std :: endl' también vacía la transmisión. – AraK

+0

Thx para eliminar la confusión con std :: endl AraK – Morlock

1

por favor utilice g ++ gcc para compilar no se

+2

Realmente necesita proporcionar más información que esta. (Por qué se debe usar g ++ por ejemplo.) –

+0

g ++ y gcc es el mismo compilador pero con frontend diferente. Una de estas diferencias es que g ++ tiene un vínculo con las bibliotecas estándar de C++ (como ) y no con el frontend gcc. –

1

Si no desea utilizar std junto cout como-

std::cout << "Hello World";

También puede definir std al inicio del programa 'el uso de espacio de nombres 'palabras clave como-

 #include <iostream > 

    using namespace std; 

    int Addition(int a, int b) 
    { 
     return (a + b); 
    } 

    int main() 
    { 
     cout << "Result : " << Addition(2, 4) << "\n"; 
     return 0; 
    } 

Ahora usted no necesita escribir std, everytim e usted usa operaciones de E/S.

Cuestiones relacionadas