elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 2,990 veces)
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


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

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: 1.151


Sic utere tuo ut alienum non laeda


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

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
  1. #define FOPEN(a,b)
  2.  
  3.            if(a==1){
  4. b=fopen("asd1.dat","ab");
  5. }
  6.            else if(a==2){
  7. b=fopen(""asd2.dat,"ab"); }
  8.  


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


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

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define FOPEN(var, sufix) ((var) = fopen("asd" TO_STR(sufix) ".dat", "ab"))
  5. #define TO_STR(str)  #str
  6.  
  7. int main(void)
  8. {
  9.   FILE *a;
  10.   FILE *b;
  11.  
  12.   FOPEN(a, 1);
  13.   FOPEN(b, 2);
  14.  
  15.   fclose(a);
  16.   fclose(b);
  17.  
  18.   return EXIT_SUCCESS;
  19. }
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

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
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 1,565 Último mensaje 15 Junio 2005, 00:50 am
por NaNo N´RoSeS
Macro (Solucionado) « 1 2 »
Programación Visual Basic
̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿̿ 10 3,833 Último mensaje 18 Julio 2007, 02:07 am
por Freeze.
Macro en VB?
Programación Visual Basic
VnetCo 4 1,903 Último mensaje 26 Julio 2008, 03:46 am
por JmHk
Macro ASM
ASM
Riki_89D 6 4,104 Último mensaje 29 Septiembre 2009, 23:12 pm
por Riki_89D
Duda macro excel
Programación Visual Basic
egrimm 2 2,612 Último mensaje 29 Marzo 2010, 01:36 am
por egrimm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines