elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:52  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  duda con macro con if else if else
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda con macro con if else if else  (Leído 914 veces)
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 32


Ver Perfil
duda con macro con if else if else
« en: 23 Septiembre 2011, 15:08 »

quiero hacer una macro asi, pero no se como hacerla realmente  :-[

#define FOPEN(a,b)
 
            if(a==1) b=fopen("asd1.dat","ab"); /
            else if(a==2) b=fopen(""asd2.dat,"ab");


el problema es que no se bien las reglas para crear macros asi complejas

necesitaria ayuda  :laugh:



En línea
тαптяαпсє


Desconectado Desconectado

Mensajes: 739


Usuario EHN


Ver Perfil
Re: duda con macro con if else if else
« Respuesta #1 en: 23 Septiembre 2011, 16:11 »

quiero hacer una macro asi, pero no se como hacerla realmente  :-[

#define FOPEN(a,b)
 
            if(a==1) b=fopen("asd1.dat","ab"); /
            else if(a==2) b=fopen(""asd2.dat,"ab");


el problema es que no se bien las reglas para crear macros asi complejas

necesitaria ayuda  :laugh:



Código
#define FOPEN(a,b) 
 
           if(a==1){
b=fopen("asd1.dat","ab");
}
           else if(a==2){
b=fopen(""asd2.dat,"ab"); }
 


En línea

rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: duda con macro con if else if else
« Respuesta #2 en: 23 Septiembre 2011, 17:47 »

Para algo relativamente complejo es mejor desarrollar una función. Ello porque en la macro seria muy difícil (tal vez mediante la macro "assert") validar los argumentos.

En todo caso si solo quieres agregar un sufijo a la cadena puedes utilizar algo mas o menos así:
Código
#include <stdio.h>
#include <stdlib.h>
 
#define FOPEN(var, sufix) ((var) = fopen("asd" TO_STR(sufix) ".dat", "ab"))
#define TO_STR(str)  #str
 
int main(void)
{
  FILE *a;
  FILE *b;
 
  FOPEN(a, 1);
  FOPEN(b, 2);
 
  fclose(a);
  fclose(b);
 
  return EXIT_SUCCESS;
}
Como puedes observar el problema es que se deben utilizar literales como 1 o 2, no puedes utilizar una variable. De nuevo en un caso como ese lo mejor es una funcion.

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Macro en Vb
Programación Visual Basic
NaNo N´RoSeS 1 483 Último mensaje 15 Junio 2005, 00:50
por NaNo N´RoSeS
Macro en VB?
Programación Visual Basic
VnetCo 4 598 Último mensaje 26 Julio 2008, 03:46
por JmHk
macro en excel
Programación Visual Basic
tony82 7 2,845 Último mensaje 27 Enero 2009, 00:00
por Novlucker
Macro ASM
ASM
Riki_89D 6 1,571 Último mensaje 29 Septiembre 2009, 23:12
por Riki_89D
Duda macro excel
Programación Visual Basic
egrimm 2 835 Último mensaje 29 Marzo 2010, 01:36
por egrimm
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines