C/Visual C - #define

 
Vista:

#define

Publicado por Diana (1 intervención) el 21/06/2007 17:25:22
Hola, a decir verdad no sé programar muy bien en C, pero tengo que exportar unas funciones de C a Basic .NET, El problema que tengo es con la instrucción #define

Primeramente declaran la macro
#define RET_DO_WRITE_TCP_BASE 10

y posteriormente declaran otras pero le sigue el nombre de la macro anterior y un número

#define RET_SOCKET_ERR RET_DO_WRITE_TCP_BASE 10

#define RET_CONNECT_ERR RET_DO_WRITE_TCP_BASE 11

Mi duda es la interpretación de la instrucción anterior, puesto que no sé si las instrucciones estén haciendo alguna operación entre ellos como por ejemplo una multiplicación, Agradecere toda la ayuda posible
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

RE:#define

Publicado por fernando.gomez (1603 intervenciones) el 21/06/2007 18:05:41
A ver, un #define es una directiva de PREcompilación. Esto significa que cuando tienes algo así:

#define NUM 10;
int vtr[NUM];

lo que hace el Precompilador es sustituir todos los #defines, de tal suerte que "cambia" tu código a lo siguiente:

int vtr[10];

Así pués, en tu ejemplo, lo que va a hacer el precompilador es poner el valor de RET_DO_WRITE_TCP_BASE (10), un espacio y otro 10. Obviamente cuando lo emplees en algún lugar posiblemente no compile, pero pues eso es lo que hará el precompilador.

Saludos.
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:#define

Publicado por Tom (619 intervenciones) el 21/06/2007 19:18:01
Como dice Fernando, si en tu C original tienes:

printf("%d\n", (RET_CONNECT_ERR));

tras precompilar, quedaría así:

printf("%d\n", (10 11));

Y eso, en principio, no compilará. Estoy dándole vueltas a ver si hay manera de pasar eso a alguna función pero no se me ocurre nada.
Creo que has transcrito mal el código, o directamente, está mal.
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