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..
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
int main()
que el compilador no soporte
system("pause");
en resumen... si no dices que error te da, no se puede dar una ayuda real
No es stream.h, es <iostream>
Además te falta el "using namespace std;"
los errores que me sale es que no existe la libreria stream y si la quito no lo toma al cout y al cin
¿Estas usando el compilador de C?
Cita de: engelx en 17 Enero 2014, 03:37 AMque el compilador no soporte
system("pause");
system es la librería estándar.
// Guardar como .cpp
#include <iostream>
#include <windows.h> // para que funcione el system poner esta linea tanto en codeblocks como en dev cpp
using namespace std;
int main (){
cout << "lol";
system("pause>null");
return 0;
}
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
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.
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:
Cita de: vangodp en 22 Enero 2014, 11:58 AM
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.
Cita de: vangodp en 22 Enero 2014, 11:58 AM¿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:
void limpiarPantalla()
{
#ifdef _WIN32
system("cls");
#elif __gnu_linux__
system("clear");
#else
#ERROR La funcion LimpiarPantalla no está definida para tu OS.
#endif
}
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.
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":
#define DEBUG
//... codigo
void funciona()
{
#ifdef DEBUG
ofstream escritura("debug.txt");
//...
// Imprimir el valor de las variables internas en un archivo...
#endif
}
Si yo quito el #define DEBUG de ahí arriba, entonces esa función no hará nada.