Dev - C++ - Problema de compilacion Dev C++

 
Vista:

Problema de compilacion Dev C++

Publicado por Sebas (6 intervenciones) el 17/07/2006 11:34:44
Hace algo más de un año que no utilizaba el C++ y estoy espeso: al compilar me sale el warning "the file includes at least one deprecated or antiquated header". Lo primero es que no recuerdo que me haya salido antes y lo segundo es que, segun el propio mensaje, y lo que he encontrado por la red es cuestion de quitar el .h a la libreria iostream.
Efectivamente si pongo #include <iostream> en lugar de iostream.h, el mensaje desaparece pero... me da errores en los cout, cin, etc etc etc.
Me tiene muy despistado porque si pongo todo el código en un mismo archivo, se compila bien, pero si divido el mismo en 3 (dos cpp con el codigo y un .h con las clases), es cuando el tema se estropea y comienza el warning. He leido que hay un modificador para gcc que hace ignorar el modificador pero no deja de ser un poco incordio tener que acudir a la linea de comandos para probar. Intuyo que la solucion debe ser simple, pero tanto como que no doy con ella, por eso os pido algo de luz
saludos

Sebas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Evitar errores en cout, cin y otros

Publicado por Kraken (4 intervenciones) el 17/07/2006 15:47:24
Hola, Sebas.

Efectivamente, el error se debe a que ''iostream.h'' es la versión antigua de la clase iostream y, supuestamente, Dev C++ tan solo incorpora su versión más actual, es decir, ''iostream''.

Para que el linker no muestre el error deberás cambiar ''iostream.h'' por ''iostream'' en el include y, para que no aparezca el error que marcaba en las llamadas a métodos de esa clase (como cout y cin), deberás escribir lo siguiente debajo de los include:

using namespace std;

Esto dice al linker que usaremos la versión estándar de las funciones.
Se podría escribir, igualmente:

std::cout << ...
std::cin >> ...

en todas las llamadas a dichas funciones, pero esto sería harto tedioso y resulta mucho más rápida utilizar la primera alternativa.

Espero que esta pequeña explicación te sirva.

Saludos.

Kraken
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Evitar errores en cout, cin y otros

Publicado por Sebas (6 intervenciones) el 17/07/2006 19:40:25
Hola kraken.
Tengo puesto el namespace std y efectivamente me da error cin, cout y otras. Realmente lo que he hecho ha sido crear un nuevo proyecyo C++ para consola (con Dev C++) y él te lo añade.
EL tema es que, parece, que ya lo he resuelto añadiendo en las opciones del compilador lo que dice el compilador -wno deprecated o algo asi, ahora no recuerdo y ya deja de dar el warning. Pero me sigue picando el problema; primero por curiosidad (hace unos años que lo utilizaba no recuerdo que me sucediese eso) y segundo porque tengo que trabajar con Kdevelop en Linux, que es muy parecido, y a éste no (parece) que se le puedan añadir las opciiones del compilador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar errores en cout, cin y otros

Publicado por Kraken (4 intervenciones) el 18/07/2006 21:36:53
Hola de nuevo, Sebas.

El problema se origina a causa de la estandarización de la nueva forma de inclusión de archivos de cabecera (sin ".h").
A partir de entonces, los archivos de cabecera viejos (con ".h") quedaron prácticamente obsoletos y es recomendable usar los nuevos para crear código estándar, actual y fácilmente transportable a otros compiladores.
Muchos entornos de desarollo siguen incorporando ambos archivos de cabecera (los que tienen extensión ".h" y los que no tienen extensión, es decir, los nuevos).
Es el caso de, por ejemplo, Microsoft Visual C++ 6.0 y Borland C++ 6 Builder.
En el caso de Bloodshed Dev-C++, éste no incluye la versión antigua de iostream (iostream.h), y cada vez que se intenta incluir la clase iostream.h el linker suelta un Warning informando que la versión antigua es ya obsoleta. El error dice así:

________________________________________________________
32:2 D:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header.
Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
_________________________________________________________

Resulta altamente recomendable el uso de las nuevas versiones de los archivos de cabecera, además de ser más flexible la nueva opción, puesto que cuando se escribe, por ejemplo, "include <iostream.h>", se está escribiendo lo mismo que:
"include <iostream> using namespace std;"
Es decir, se está asignando directamente el espacio de nombrado. La nueva versión, obviamente, permite incluir o no el espacio de nombrado y esta es una diferencia que debería tenerse en cuenta.

Espero que te haya aclarado algo.
Saludos,

Kraken
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar errores en cout, cin y otros

Publicado por carlos (2 intervenciones) el 10/07/2007 07:56:11
el problema es que ahora pongo los iostream sin .h pero me salen errores con el cout ?
pq eso ?

atte
carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar errores en cout, cin y otros

Publicado por david (1 intervención) el 11/07/2018 16:33:55
hola deseo que me ayuden cuando copilo con Dev c++ me tira error en cin>> me pasa con todo los proyectos que hago
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evitar errores en cout, cin y otros

Publicado por carlos (2 intervenciones) el 10/07/2007 08:03:28
me sale este error :(
'main'
ln
name

en mi main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
void main(void){
//declaracion de las variables//
	int numfinal;
	int i=0, v=0;
	int	estados, inicial, qtemp, var, var2;
	int final[sizeof(int)]; //arreglo donde guardo los estados finales
	bienvenida(); //imprimendo la bienvenida
 
 
	getch();  //una tecla para continuar
	system("cls");//limpiando lapantalla
	cout<<endl<<"        **********DEFINICION DE ESTADOS DEL DFA*********            "<<endl;
 
	while (estados <=0){//si introduzco un numero de estados negativos o cero me preguntara hasta que meta uno positivo
	cout<<endl<<"Ingrese el numero de estados:";
	cin>>estados;
	}
	//imprimiendo los estados //
	cout<<endl<<"El numero de estados ingresado es de: "<<estados;
	cout<<endl<<endl;
	for(int j=0; j<=estados-1; j++){
		cout<<"q["<<j<<"]"<<endl;
	}
 
	cout<<endl;
 
 
	var=1;// ES FALSO
	while(var==1){//mientras no ponga un estado valido la funcion me preguntara por el estado inicial
	cout<<endl<<endl<<"Ingrese el estado inicial (debe encontrarse en su conjunto de estados):"<<" q ";
 
	cin>>inicial;
	auxi2=0;
	comprobar_estados(estados, inicial); //comprobando si el estado es valido para los estados definidos
	if(auxi2==0) //si esto es 0 es porque el estado introducido es correcto
		var=0;// SE HACE VERDADERO
	}
 
	cout<<endl<<"cuantos estados finales desea definir? "<<endl;
	cin>>numfinal;
	while(v<numfinal){//introduciendo uno a uno los estados finales
 
	var2=1;
	while(var2==1){
 
	cout<<endl<<"Ingrese su estado final (debe encontrarse en su conjunto de estados): "<<" q ";
 
	cin>>final[v];
	comprobar_estados(estados, final[v]);//comprobando el estado introducido que se encuentre en el arreglo de estados
 
	if(auxi2==0)//de igual manera si es correcto este valor sera 0
		var2=0;
 
	}
		v++;//pasamos a preguntar por el siguiente estado final
 
 
 
	}
 
//imprimiendo los estados iniciales y finales
	cout<<endl<<endl<<"El estado inicial escogido es: q["<<inicial<<"]";
 
	cout<<endl<<"Estos son los estados finales escogidos : ";
	for(int p=0; p<numfinal; p++){//recorriendo e imprimiendo estados finales
		cout<<"q["<<final[p]<<"]"<<" ";
	}
 
 
	cout<<endl<<endl<<endl<<"                 Presione una tecla para continuar..."<<endl;
	getch();
	system("cls");
	cout<<endl<<"     ************DEFINICION DEL ALFABETO*********** "<<endl;
	alfabeto = new char[i];
//este bucle estara repitiendose hasta entrar un alfabeto que no contenga simbolos repetidos//
	auxi3=1;
	while (auxi3==1){
	auxi3=0;
	cout<<endl<<endl<<"Ingrese un tras otro simbolos de su alfabeto sin repetir simbolos : ";
	cin>>alfabeto;
	i=strlen(alfabeto);
	comprobar_alfabeto();//llamada a la funcion que revisa que el alfabeto este bien escrtio
	}
 
//imprimiendo el alfabeto
	cout<<endl<<" su alfabeto definido consta de "<<i<<" simbolos y estos son: "<<endl;
	cout<<"{";
	for (int z=0; z<i; z++)
		cout<<alfabeto[z]<<",";
 
	cout<<"}";
 
	palabra = new char[longi];
	delta= new int *[estados];
	for( int r=0; r<estados;r++){ //inicializando la matriz delta donde se guardan los estados
		delta[r]=new int [i];
	}
	cout<<endl<<endl<<endl<<"Presiones una tecla para continuar"<<endl;
	getch();
	system("cls");
	llenadodelta(estados, i);//llamado a la funcion para llenar la funcion de transicion delta
 
	char seguir='s';
 
	while(seguir=='s'){ //este bucle realizara la prueba para tantas palabras como queramos siempre que queramos otra palabra
 
	introducir_palabra(i); //llamado a funcion de introducir palabra
	comprobar_palabra(i); //llamado a la funcion de comprobar palabra
 
	cout<<"longitud de la palabra: "<<strlen(palabra)<<"  palabra: "<<palabra<<endl;
 
	longi=strlen(palabra);
 
	qtemp=inicial;//qtemp es el que nos ira dando el valor del estado dentro de la matriz de transicion para cada simbolo de la palabra
	for(int s=0; s<longi;s++){//recorriendo la palabra
		for(int a=0; a<i; a++){   //recorriendo el alfabeto
 
			if(palabra[s]==alfabeto[a]){//si encuentro el simbolo de la palabra en el alfabeto paro y ya tengo la posicion del simbolo en el alfabeto
			break;
			}
		}//find del for de recorrido de alfabeto
 
		cout<<"me estoy desplazando al estado q["<<qtemp<<"]["<<alfabeto[a]<<"] = "<<delta[qtemp][a]<<endl; //imprimendo el estado al cual se desplaza dentro de la matriz
		qtemp=delta[qtemp][a];//qtemp pasa a tomar el nuevo valor
		cout<<endl<<"                            presione una tecla para seguir con la transicion"<<endl;
		getch();
	}
 
//aqui pasamos a comprobar si el estado en que quedo qtemp pertence a algun estado final
	for(int c=0; c<=numfinal-1;c++){//recorriendo  los estados finales
 
	if(qtemp==final[c]){//preguntando qtemp pertenece a alguno de los estados finales si es asi es aceptado
		 cout<<"LA PALABRA ES ACEPTADA POR EL DFA!!!!"<<endl<<"qtemp="<<qtemp<<"  final="<<final[c]<<endl;
		 break;
	}
	else{//sino es asi y estoy en la ultima posicion de los estados finales quiere decir que el estado en que termino no es un estado final por lo tanto no es aceptado
		 if(c==numfinal-1)
		 cout<<"LA PALABRA NO FUE ACEPTADA POR EL DFA!!!"<<endl<<"qtemp="<<qtemp<<"  final="<<final[c]<<endl;
		}
	}
	cout<<endl<<"desea examinar otra palabra? "<<endl;//para examinar otra palabra
	cin>>seguir;
 
	}//fin del while
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

me sale error en iostream

Publicado por fernando (1 intervención) el 24/04/2016 01:25:26
me sale error en iostream, ya di con los dos #include<iostream> y <iostream.h> e igual me da no puedo compilar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Evitar errores en cout, cin y otros

Publicado por ISABEL (2 intervenciones) el 04/05/2017 16:08:03
tengo el mismo problema y hize lo de using name space std; y efectivamente ya no me agarro el problema en los cout pero me marca error en los char y en mis if y else :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar