Foros del Web » Administración de Sistemas » Unix / Linux »

problema al compilar...

Estas en el tema de problema al compilar... en el foro de Unix / Linux en Foros del Web. Muy buenas tardes, este es mi primer post, y lo pongo para hacerles una pregunta. Tengo este simple programa #include <stdio.h> #define CONST=10 #define max ...
  #1 (permalink)  
Antiguo 07/10/2003, 13:52
 
Fecha de Ingreso: octubre-2003
Mensajes: 5
Antigüedad: 21 años, 2 meses
Puntos: 0
problema al compilar...

Muy buenas tardes, este es mi primer post, y lo pongo para hacerles una pregunta.

Tengo este simple programa

#include <stdio.h>
#define CONST=10
#define max (a, b) (((a)>(b)) ? (a): (b))

main()
{
int i;

i = max (20, CONST);

printf("El mayor de %d y %d es %d\n", 20, CONST, i);
}

solamente quiero compilarlo y que me de un archivo de con extension .i que es la fase del preprocesamiento se le da con la opcion -E: que seria asi>
gcc prep.c -E -o prep.i
prep.c:2:14: warning: ISO C requires whitespace after the macro name
.. de todas maneras al compilarlo como normalmente se hace para obtener el ejecutable me da eso error y otros(que no importan), el proble es con ese error... alguien podria ayudarme...
estoy usando red hat 8.0 con el kernel 2.4.18-14
la version del gcc es la 3.2.. agradeceria su ayuda...
  #2 (permalink)  
Antiguo 08/10/2003, 05:25
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 22 años
Puntos: 0
Holas...

yo no he tratado de hacer programas tan complicados pero intentare ayudarte aunque hace mucho que no programo bla bla bla...

eso no es un error es solo un warning... te has serciorado si te genera el prep.i si no te lo genera es por que si tenes errores pero no en esta linea... si te arroja mas lineas podes postearlas todas.. :-p :-p :-p :-p


bueno espero te sirva de algo mi ayuda...

Suerte!
__________________
Siempre hago lo que quiero...
Aunque no quiera...
  #3 (permalink)  
Antiguo 08/10/2003, 09:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 5
Antigüedad: 21 años, 2 meses
Puntos: 0
Mensaje

Bueno, muy cierto, nomas por haber visto ese mensaje me deje llevar sin revizar si me habia generado el archivo , y si me lo genera, pero al compilarlo nomas me genera ese error.... GRACIAS..
  #4 (permalink)  
Antiguo 08/10/2003, 11:37
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 22 años
Puntos: 0
Holas...

Cita:
pero al compilarlo nomas me genera ese error.... GRACIAS..
Cita:
de todas maneras al compilarlo como normalmente se hace para obtener el ejecutable me da eso error y otros(que no importan)

bueno no se si lo arreglaste ya pero por si acaso sigues con el error, podes postear que te arroja y la orden de compilacion...




Suerte!
__________________
Siempre hago lo que quiero...
Aunque no quiera...
  #5 (permalink)  
Antiguo 08/10/2003, 16:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 5
Antigüedad: 21 años, 2 meses
Puntos: 0
cc prep.c -E -o prep.i
prep.c:6:14: warning: ISO C requires whitespace after the macro name

cc prep.c -o prep
prep.c:6:14: warning: ISO C requires whitespace after the macro name
prep.c: In function `main':
prep.c:13: `a' undeclared (first use in this function)
prep.c:13: (Each undeclared identifier is reported only once
prep.c:13: for each function it appears in.)
prep.c:13: `b' undeclared (first use in this function)
prep.c:13: parse error before '=' token
prep.c:15: parse error before '=' token



de esas dos maneras lo he tratado de compilar
  #6 (permalink)  
Antiguo 08/10/2003, 16:12
 
Fecha de Ingreso: octubre-2003
Mensajes: 5
Antigüedad: 21 años, 2 meses
Puntos: 0
por ahi me dijeron que la distribucion que yo tengo, que es la red hat 8.0 habia salido con errores el gcc, que tenia que actualizarlo... no se que tan cierto sea eso...
  #7 (permalink)  
Antiguo 09/10/2003, 03:34
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 22 años
Puntos: 0
pues pueda que sea verdad que el gcc tenga errores... pero lo tuyo me suena que es que te falta definir a y b.... como te dije no soy un versado en C ... lo que voy hacer es probar tu codigo en mi maquina cn un gcc estable haber si funca....

PD: espero no te moleste que coja tu codigo :)

Suerte!
__________________
Siempre hago lo que quiero...
Aunque no quiera...
  #8 (permalink)  
Antiguo 09/10/2003, 04:20
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 22 años
Puntos: 0
Holas...

pues he probado tu codigo en mi maquina y pues no funca! ... osea me sale lo mismo que a ti sorry...

yo no te puedo ayudar con lo de los #define por que no los manejo... espero que unos de los que sepan C pues nos colaboren...

Suerte!!
__________________
Siempre hago lo que quiero...
Aunque no quiera...
  #9 (permalink)  
Antiguo 09/10/2003, 04:40
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 6 meses
Puntos: 16
Hola,

Creo que tu problema es que en la definicion de la macro dejas un espacio entre max y el parentesis. Prueba:

#define max(a, b) ((a) > (b) ? (a) : (b))

Supongo que esta bien tal como te lo pongo, porque lo he sacado de http://www.cl.cam.ac.uk/~mgk25/volat...IS.1999-04.txt , que parece la especificacion del ISO C (he de buscar otra fuente).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 09/10/2003, 06:37
Avatar de kapachov  
Fecha de Ingreso: diciembre-2002
Ubicación: Loeches
Mensajes: 464
Antigüedad: 22 años
Puntos: 0
/*
[#4] EXAMPLE 2 The following defines a function-like macro
whose value is the maximum of its arguments. It has the
advantages of working for any compatible types of the
arguments and of generating in-line code without the
overhead of function calling. It has the disadvantages of
evaluating one or the other of its arguments a second time
(including side effects) and generating more code than a
function if invoked several times. It also cannot have its
address taken, as it has none.

#define max(a, b) ((a) > (b) ? (a) : (b))
The parentheses ensure that the arguments and the resulting
expression are bound properly.
*/



#include <stdio.h>
#define max(a, b) ((a) > (b) ? (a) : (b))

int const CONS=10 ;

main()
{
int i;

i = max(20, CONS);

printf("El mayor de %d y %d es %d\n", 20, CONS, i);
}



Holassss .... funca!!!


---------------------

El error esta en el #define CONS=10...
pues no se hace de esta forma!

se hace asi!!

#define CONS 10

y funca...!!
__________________
Siempre hago lo que quiero...
Aunque no quiera...

Última edición por kapachov; 09/10/2003 a las 07:00
  #11 (permalink)  
Antiguo 10/10/2003, 10:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 5
Antigüedad: 21 años, 2 meses
Puntos: 0
ok, muchas gracias, ya funcioneo asi como dice...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:51.