Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: febee en 17 Enero 2014, 03:25 am



Título: ayuda no puedo compilar un sencillo ejemplo
Publicado por: febee en 17 Enero 2014, 03:25 am
me descargue el dev 5.5.3 y me sale errores y no me toma la libreria stream
// librerías que permiten utilizar las funciones del lenguaje
#include <stream.h>
#include <stdlib.h>
// programa principal
 main () {   
cout << "HOLA MUNDO!!!\n";
    system("pause");
    }
lo raro que en windows xp coon otra version del dev c++ si me lo toma y lo compila..


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: engel lex en 17 Enero 2014, 03:37 am
que errores te da el compilador?


no todos los compiladores son iguales... es probable que te exija  que el main sea tipo int o void

Código:
int main()

que el compilador no soporte
Código:
system("pause");

en resumen... si no dices que error te da, no se puede dar una ayuda real


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: amchacon en 17 Enero 2014, 11:34 am
No es stream.h, es <iostream>

Además te falta el "using namespace std;"


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: febee en 22 Enero 2014, 03:33 am
los errores que me sale es que no existe la libreria stream y si la quito no lo toma al cout y al cin


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: amchacon en 22 Enero 2014, 10:04 am
¿Estas usando el compilador de C?

que el compilador no soporte
Código:
system("pause");
system es la librería estándar.


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: vangodp en 22 Enero 2014, 11:49 am
Código
  1. // Guardar como .cpp
  2. #include <iostream>
  3. #include <windows.h>  // para que funcione el system poner esta linea tanto en codeblocks como en dev cpp
  4. using namespace std;
  5.  
  6.  
  7. int main (){
  8.    cout << "lol";
  9.  
  10.    system("pause>null");
  11.    return 0;
  12. }
  13.  

Para hacerlo mas portable envés system("pause>null"); poner:
cin.get(); o cin.ignore();
Lo único que hace falta es la librería iostream que usas para cout, asi no te hace falta system();
Pero si vas usar system() con cualquier comando poner windows.h siempre que sea windows y no linux  :rolleyes:
EDIT: EN XP, no se si es lo mismo en 7 :3


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: amchacon en 22 Enero 2014, 11:52 am
En C, system es de la librería <stdlib.h>. En C++ es <cstdlib>

Otra cosa esque windows.h incluya esa librería por su cuenta.


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: vangodp en 22 Enero 2014, 11:58 am
Tengo xp, y haciendo el include de windows.h si que me va.
¿cstdlib es estandar? O sea a ver si me explico: ¿si lo llevo a linux sirve con el system()?
:huh:


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: amchacon en 22 Enero 2014, 12:10 pm
Tengo xp, y haciendo el include de windows.h si que me va.
No te digo que no. Pero una de dos, o windows.h tiene una función system propia o hace un include de la stdlib.

¿cstdlib es estandar? O sea a ver si me explico: ¿si lo llevo a linux sirve con el system()?
:huh:
Sí, otra cosa son los comandos que le pases.

Por ejemplo, mira esta función génerica para limpiar la pantalla:
Código
  1. void limpiarPantalla()
  2. {
  3.    #ifdef _WIN32
  4.        system("cls");
  5.    #elif __gnu_linux__
  6.        system("clear");
  7.    #else
  8.        #ERROR La funcion LimpiarPantalla no está definida para tu OS.
  9.    #endif
  10. }


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: Hacklinx en 22 Enero 2014, 13:14 pm
Visto el comentario de amchacon me asaltan algunas dudas:

El código que has puesto para reconocer sistemas operativos, ¿no tiene mucho sentido no?, me explico.
Estaría muy bien, pero  dependiendo de donde lo compilemos funcionará solo para ese sistema operativo, es decir que si hago esa función limpiarpantalla(); en windows y la compilo, no se podrá usar para linux ¿verdad?.
Ya que al compilarlo en windows lo paso para lenguaje máquina de windows  todo, ya no me podrá funcionar en linux aparte de que la extendión del ejecutable creo que era distinta, luego utilidad multiplataforma no parece tener.

Ya que si lo compilas en windows un linux nunca podrá correr el archivo.
Corregidme si me equivoco.

Saludos.


Título: Re: ayuda no puedo compilar un sencillo ejemplo
Publicado por: amchacon en 22 Enero 2014, 13:31 pm
Cuando veas un código con un # es una directiva de compilador. Eso no se verá en el código final, por tanto el código compilado no es portable.

Lo que uso se llama "compilación condicional", si estoy compilando en windows windows hará esa línea y si estoy en linux compilará la otra. Si no estoy en ninguno de los dos muestra un error de compilación.

No solo es para los sistemas operativos, puede usarlo para las cosas que quieras. Por ejemplo, puedes definir cosas que se muestren solo en "modo depuración":

Código
  1. #define DEBUG
  2.  
  3. //... codigo
  4.  
  5. void funciona()
  6. {
  7.   #ifdef DEBUG
  8.            ofstream escritura("debug.txt");
  9.  
  10.            //...
  11.  
  12.           // Imprimir el valor de las variables internas en un archivo...
  13.   #endif
  14. }

Si yo quito el #define DEBUG de ahí arriba, entonces esa función no hará nada.