Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: 1cacalvo en 27 de Abril de 2007, 01:41:31 PM

Título: Orden de los productos en C++
Publicado por: 1cacalvo en 27 de Abril de 2007, 01:41:31 PM
Pues me he encontrado una cosa curiosa en C++ a ver si me comentais porque es (tengo una ligera idea o sospecha)...

Tengo definido:


Citar
#define DESPLY 100;

//Desplazamiento inicial
int desp = 3 * DESPLY;  //Linea correcta
int desp = DESPLY * 3;  //Error de Comp:  error C2100: direccionamiento indirecto no válido


La verdad es que me ha parecido curioso...
Título: Re: Orden de los productos en C++
Publicado por: sés en 27 de Abril de 2007, 01:46:37 PM
Cita de: "1cacalvo"
Citar#define DESPLY 100;

//Desplazamiento inicial
int desp = 3 * DESPLY;  //Linea correcta
int desp = DESPLY * 3;  //Error de Comp:  error C2100: direccionamiento indirecto no válido

La verdad es que me ha parecido curioso...

A mí no tanto :P
Título: Orden de los productos en C++
Publicado por: Zaelsius en 27 de Abril de 2007, 02:11:26 PM
Evita los #define, usa 'const' siempre que puedas para constantes.
Título: Orden de los productos en C++
Publicado por: ethernet en 27 de Abril de 2007, 02:45:44 PM
pista: ojo a los puntos y comas
Título: Orden de los productos en C++
Publicado por: Pogacha en 27 de Abril de 2007, 03:49:07 PM
Cita de: "ZaelSiuS"Evita los #define, usa 'const' siempre que puedas para constantes.
Exactamente.
Los defines tienen una utilidad pero en la mayoria de los casos es mejor usar otras cosas ... const y templates generalmente.
Título: Orden de los productos en C++
Publicado por: ethernet en 27 de Abril de 2007, 08:42:32 PM
En general siempre será mejor usar cosas que te aporte el lenguaje, evitarás problemas como ese.
Título: Orden de los productos en C++
Publicado por: kbks en 28 de Abril de 2007, 12:11:17 AM
Como ya te han dicho el problema está en el ;.

Esto:

#define DESPLY 100;

//Desplazamiento inicial
int desp = 3 * DESPLY; //Linea correcta
int desp = DESPLY * 3; //Error de Comp: error C2100: direccionamiento indirecto no válido


Es lo mismo que esto otro:


int desp = 3 * 100;;
int desp = 100;* 3;

Es decir, en la primera multiplica 3*100 y lo almacena en desp y despues compila una instrucción vacia. La segunda es claramente erronea.
Título: Orden de los productos en C++
Publicado por: 1cacalvo en 02 de Mayo de 2007, 05:16:28 PM
Upsss pero que tonto parece uno cuando te explican estas cosillas....

Pues muchas gracias a todos por la aclaración y ya he cambiado ese DEFINE por una constante... :P