Título: If en macros ? Publicado por: ramona98 en 20 Agosto 2013, 12:18 pm Es posible incluir un IF en un macro?
Por ejemplo, quiero hacer un macro que devuelva TRUE si el argumento introducido es un digito decimal, y no se me ocurre otra forma que no sea anadiendo un if en el macro. por otro lado, es posible que un macro devuelva un char o un string en lugar de de int o float? gracias y saludos Título: Re: If en macros ? Publicado por: amchacon en 20 Agosto 2013, 12:27 pm Una macro no devuelve nada.
¿Usas C++? Si es así, quizas te interese usar mejor funciones inline con sobrecarga de argumentos: Código
Título: Re: If en macros ? Publicado por: ramona98 en 20 Agosto 2013, 14:30 pm no te entiendo,
mira, esto es exactamente lo que necesito: Exercise 10-2: Write a macro is_digit that returns TRUE if its argument is a decimal digit. yo entiendo que una macro te devuelve un output, pero dicho output no puede ser una string? o que forma existe de que me devuelva un TRUE ? gracias! Título: Re: If en macros ? Publicado por: ivancea96 en 20 Agosto 2013, 14:32 pm TRUE es igual a 1. es un valor Booleano (1 o 0), verdadero o falso, no una string.
Título: Re: If en macros ? Publicado por: ramona98 en 20 Agosto 2013, 14:59 pm gracias,
entonces seria algo asi? is_digit(x) (if(x == 0 || x == 1 ||..... x== 9) { // aqui se supone que tengo decir que si esto se cumple se devuelva 0 si no 1, pero :huh: } Título: Re: If en macros ? Publicado por: rir3760 en 20 Agosto 2013, 16:09 pm La macros no son funciones, son sustituciones de texto y estas ocurren antes de que el texto sea compilado. Para explicarlo mejor cualquiera que haya utilizado un editor de texto (el que sea) sabe como funciona la opción para remplazar. Por ejemplo uno puede sustituir todas las instancias de la palabra "negro" por "blanco":
Texto original: Código
Remplazamiento de "negro" por "blanco" resulta en: Código Este ejemplo sigue la convención de C: las sustituciones no se realizan si la palabra completa no coincide y el texto de las cadenas literales se ignora. En el caso de las macros con argumentos se realiza la sustitución y donde se indique un argumento formal (definición de la macro) este se sustituye por el argumento actual (uso de la macro): Código
Resulta en: Código
Para darte una idea de lo que te piden si el objetivo fuera crear un macro que verifique si un carácter es alfabético en minúsculas podríamos utilizar: Código
Ya que antes de que sea compilado ese texto resulta (debido a la macro) en: Código
La macro que debes desarrollar es similar. Un saludo Título: Re: If en macros ? Publicado por: mr.blood en 20 Agosto 2013, 23:16 pm No se si quieres algo asi...
Código
Perfectamente puedes poner un if en un macro, pero por limpieza lo he preferido hacer así. En realidad cuando yo pongo ISDIGIT el compilador lo reemplaza por character>='0' && character<='9' (character sería un "parámetro") es solo cuestion de dejar el código más limpio. EDITO: No había visto el comentario de rir3760, es una muy buena explicación de lo que es una macro. Sa1uDoS Título: Re: If en macros ? Publicado por: ramona98 en 21 Agosto 2013, 09:39 am perfecto!! muchas gracias a los dos :D
Desconocia que se pudieran ordenar asi " character>='0' && character<='9' " ... me queda mucho por aprender aun |