[C con Clase] Macros y compilación condicional

User usuarioanonimomysql en gmail.com
Mar Nov 30 17:10:12 CET 2010


Perfecta explicación.

Gracias.

El 30 de noviembre de 2010 17:02, Steven Davidson <srd4121 en njit.edu>escribió:

> Hola User,
>
> On 11/30/10, User <usuarioanonimomysql en gmail.com> wrote:
> > Hola,
> >
> > Yo no uso paréntesis y no tengo problema alguno, ¿son necesarios? Gracias
>
> Siempre que lo he visto usar, se colocaban paréntesis. Sin embargo, al
> no ser estándar, supongo que cada compilador (o precompilador) puede
> aceptar la sintaxis que quiera.
>
> > por aclarar que el uso de defined no es estándar. ¿Hay algún equivalente
> > estandar que se pueda aplicar para hacer un or en la condición de las
> > macros?
> >
>
> No hay operadores con #ifdef ni #ifndef. Lo que sí puedes hacer es
> expresar lo que quieres de otra manera. Como quieres una lógica de
> tipo OR con los negativos de sus operandos,
>
> NOT( A ) OR NOT( B ),
>
> entonces puedes expresar esto como su equivalente con AND, como
> establecen las leyes de De Morgan; esto es,
>
> NOT( A ) OR NOT( B ) = NOT( A AND B )
>
> En tu caso, esto sería,
>
> #ifdef macro1
>  #ifdef macro2
>  #else
>    // Hacer aquí lo que quieres
>  #endif
> #else
>  // Hacer aquí lo que quieres - idéntico a la parte anterior
> #endif
>
> Podemos reescribir lo anterior para aclarar la lógica y quizás
> optimizar un poco; esto sería,
>
> #ifndef macro1
>  // Hacer aquí lo que quieres
> #else
>  #ifndef macro2
>    // Hacer aquí lo que quieres - idéntico a la parte anterior
>  #endif
> #endif
>
>
> Espero que esto aclare la duda.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101130/eb445233/attachment.html>


Más información sobre la lista de distribución Cconclase