Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: eternoneofito en 21 Agosto 2011, 08:56 am



Título: Error de compilacion con GCC, libreria iostream
Publicado por: eternoneofito en 21 Agosto 2011, 08:56 am
Hola a todos los que leen, recien empiezo a programar en c++ desde linux, y resulta que no se muy bien como se usa el compilador. Me baje el gcc y un ide Kdevelop, pero por el momento preferiria usar el gcc desde la consola.

Hice un programita muy sencillo para probar, y no me compila, sino que me tira un error como el siguiente:

progc.c:1:20: error fatal: iostream: No existe el fichero o el directorio
compilación terminada.

No se si deberia bajar la libreria de algun lado y copiarla a /usr/include o en algun otro directorio. Les agradeceria si me pudieran explicar. Y mas aun, si tambien me pueden explicar como es el tema de la compilacion con gcc, para generar los ejecutables y demas detalles basicos.

Muchas gracias.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: leogtz en 21 Agosto 2011, 10:06 am
gcc es para código en C, no de C++, para C++ compila con g++.

g++ code.cpp -o code

Saludos.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: тαптяα en 21 Agosto 2011, 20:52 pm
Leo mejor, para Linux, bajate CodeBlocks y listo, lo usas de la IDE

ok?


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: leogtz en 21 Agosto 2011, 22:26 pm
Leo mejor, para Linux, bajate CodeBlocks y listo, lo usas de la IDE

ok?

Depende de cómo te guste trabajar..., hay quienes programan con un editor de texto normal (gedit, geany, scite, notepad, notepad++, ultraedit, vim, nano, emacs, joe, etc) y compilan todo por terminal, y según un programador al que respeto mucho esto es lo indicado para conocer a fondo el compilador...

Saludos.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: тαптяα en 21 Agosto 2011, 22:31 pm
Depende de cómo te guste trabajar..., hay quienes programan con un editor de texto normal (gedit, geany, scite, notepad, notepad++, ultraedit, vim, nano, emacs, joe, etc) y compilan todo por terminal, y según un programador al que respeto mucho esto es lo indicado para conocer a fondo el compilador...

Saludos.
Tiene sentido. Yo también empecé con el gedit y el g++ pero nose como le cuesta tanto instalarselo bien.

Al final a mi me dio flojera, , seguir compilando así, y acabé poniendome CodeBlocks en Kubuntu


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: eternoneofito en 22 Agosto 2011, 16:24 pm
Gracias por responder, ahora ya tengo el g++, y al parecer reconoce la libreria iostream. Pero ahora me tira otros errores, intente de varias maneras pero sigue sin resultados, y bueno probe ahora con el tipico programa "hola mundo"... y me tira los mismos errores.

holamundo.cpp: En la función ‘int main()’:
holamundo.cpp:5:2: error: ‘cout’ no se declaró en este ámbito

main()
{
   cout << "Hola mundo";
   return 0;
}


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: тαптяα en 22 Agosto 2011, 16:34 pm
Gracias por responder, ahora ya tengo el g++, y al parecer reconoce la libreria iostream. Pero ahora me tira otros errores, intente de varias maneras pero sigue sin resultados, y bueno probe ahora con el tipico programa "hola mundo"... y me tira los mismos errores.

holamundo.cpp: En la función ‘int main()’:
holamundo.cpp:5:2: error: ‘cout’ no se declaró en este ámbito

main()
{
   cout << "Hola mundo";
   return 0;
}

Necesitas un buen tutorial de C++

Coloca esto antes de la función principal:

Código:
using namespace std;

cout realmente no es una función es std cout.

Reitero lo de un curso de C++.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: Ferno en 22 Agosto 2011, 16:39 pm
Mmm, yo recomendaría un buen libro antes que un simple tutorial ^^
En el topic de libros y papers hay muchos!


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: Alien-Z en 22 Agosto 2011, 16:41 pm
Buenas:

En primer lugar, antes de comenzar a escribir nada, debes llamar a las librerías que vayas a usar. En este caso para "cout" debes usar la libreria "iostream". Después añade el "namespace standar" para evitar que el compilador confunda herramientas propias de C++ con funciones u otros.

Además has puesto "main ()" y no "int main ()". Aqui te dejo el código completo:

Código
  1. #include <iostream> //libreria
  2. using namespace std; //namespace standar
  3.  
  4. int main ()
  5. {
  6.    cout << "Hola mundo." << endl;
  7.  
  8.    cin.get();
  9.    return 0;
  10. }

Deberías seguir una guía para iniciarte en la programación ya que todo esto lo explican en cualquier libro básico; aqui hay una lista, descarga varios y usa el que comprendas mejor: http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html

Aqui hay una serie de video-tutoriales muy buenos donde se exlica todo detalladamente desde 0: http://foro.elhacker.net/programacion_cc/video_tutorial_programacion_c-t249577.0.html

Saludos!.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: eternoneofito en 22 Agosto 2011, 18:19 pm
Ok gracias a todos, estoy estudiando de un libro, pero no se hace mencion de la linea "using namespace std;" por eso no me di cuenta no es que estoy aprendiendo de la nada jajaj. En cuanto a lo de int main(), segun el libro es el que toma por defecto cuando se escribe main(), y es una cuestion de gusto personal escribir "int main()" o "main()", pero al parecer este libro es cualquier cosa jaja, ustedes lo sabran mejor que yo.
Voy a ver que hago entonces, si tiro el libro a la basura o que, gracias por su ayuda.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: Alien-Z en 22 Agosto 2011, 18:23 pm
Ok gracias a todos, estoy estudiando de un libro, pero no se hace mencion de la linea "using namespace std;" por eso no me di cuenta no es que estoy aprendiendo de la nada jajaj. En cuanto a lo de int main(), segun el libro es el que toma por defecto cuando se escribe main(), y es una cuestion de gusto personal escribir "int main()" o "main()", pero al parecer este libro es cualquier cosa jaja, ustedes lo sabran mejor que yo.
Voy a ver que hago entonces, si tiro el libro a la basura o que, gracias por su ayuda.

Aunque esté permitido, es buena costumbre evitar los "diminutivos" o las acortaciones, esto evita muchos errores a la hora de programar y fallos cuando se compila.

Acerca del libro, seguro que podrás aprender mucho de él, pero deberías tener a mano 2 o 3 más como referencia (online, no es necesario que los compres) para poder apoyarte y consultar dudas o corroborar explicaciones. Hay varios muy buenos en el primer link que te he dejado.

Saludos.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: eternoneofito en 22 Agosto 2011, 18:50 pm
Aunque esté permitido, es buena costumbre evitar los "diminutivos" o las acortaciones, esto evita muchos errores a la hora de programar y fallos cuando se compila.

Acerca del libro, seguro que podrás aprender mucho de él, pero deberías tener a mano 2 o 3 más como referencia (online, no es necesario que los compres) para poder apoyarte y consultar dudas o corroborar explicaciones. Hay varios muy buenos en el primer link que te he dejado.

Saludos.

Ok, ahi mire los enlaces, me vienen muy bien. Voy a seguir las sugerencias, gracias.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: rir3760 en 22 Agosto 2011, 18:52 pm
estoy estudiando de un libro, pero no se hace mencion de la linea "using namespace std;"
Eso indicaría un libro muy viejo, por ejemplo los enfocados en productos de Borland no mencionan esa sentencia ya que los compiladores obsoletos de esa compañia no la soportan.


En cuanto a lo de int main(), segun el libro es el que toma por defecto cuando se escribe main(), y es una cuestion de gusto personal escribir "int main()" o "main()"
No. Solo en C estándar (ISO C90) se puede omitir el tipo y este se toma como "int". En el "nuevo" estándar de C (ISO-C99) y el de C++ no se puede ya que es un error.

Cursos y/o libros aceptables para aprender C++ se listan en uno de los temas fijos. Otros dos libros muy buenos (pero en ingles) son:
----
Accelerated C++: Practical Programming by Example
Andrew Koenig and Barbara E. Moo
Addison-Wesley, 2000
ISBN 0-201-70353-X
----
C++ Primer, 4th Edition
Stanley B. Lippman, Josée LaJoie, Barbara E. Moo
Addison-Wesley Professional, 2005
ISBN-10: 0-201-72148-1
ISBN-13: 978-0-201-72148-5
----

Un saludo


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: тαптяα en 22 Agosto 2011, 22:31 pm
Ok gracias a todos, estoy estudiando de un libro, pero no se hace mencion de la linea "using namespace std;" por eso no me di cuenta no es que estoy aprendiendo de la nada jajaj. En cuanto a lo de int main(), segun el libro es el que toma por defecto cuando se escribe main(), y es una cuestion de gusto personal escribir "int main()" o "main()", pero al parecer este libro es cualquier cosa jaja, ustedes lo sabran mejor que yo.
Voy a ver que hago entonces, si tiro el libro a la basura o que, gracias por su ayuda.
int main() y main() es exactamente la misma función retornan un valor entero.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: Queta en 22 Agosto 2011, 22:42 pm
int main() y main() no es lo mismo, tal y como rir3760 dijo. Según el C99 (http://en.wikipedia.org/wiki/C99 (http://en.wikipedia.org/wiki/C99)):

Citar
The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.

http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf (http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf)

PD: aclaro que hablo de C.


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: тαптяα en 22 Agosto 2011, 22:47 pm
Gracias por la aclaración. Ahora ya lo sé que en C++ no es lo mismo.

SAludos


Título: Re: Error de compilacion con GCC, libreria iostream
Publicado por: rir3760 en 23 Agosto 2011, 00:20 am
En C++ es el mismo caso, una descripción en detalle se encuentra en la pagina Main function, C and C++ (http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B) de Wikipedia.

Un saludo