[C con Clase] Covertir String en Constante
Salvador Pozo
salvador en conclase.net
Jue Sep 24 16:48:06 CEST 2009
El pasado 2009-09-24 12:16:44, Abel escribió:
A> Hola,
A> trataré de explicar el problema que tengo; escribí lo siguiente:
A> #define MAX_A "[0001]"
A> #define MIN_B "[0002]"
A> main()
A> {
A> test("A");
A> }
A> void test(char *str)
A> {
A> sprintf(temp,"MAX_%s",str);
A> CAN(temp); //aqui esta mi problema. necesito enviar a temp como "[0001]" y no
A> como "MAX_A"
A> }
A> es un ejemplo simplificado de mi problema. Existe la forma de solucionar esto?
A> Agradezco por toda información.
Hola:
Desde luego, con macros no vas a poder hacerlo, por la sencilla razón de que las macros son expandidas ANTES de la compilación, y tu intentas usarlas durante la ejecución.
No sé hasta qué punto este ejemplo es una simplificación, pero se me ocurre que podrías usar un array:
char *tabla[] = {
"[0001]",
"[0002]"
};
main()
{
test("A");
}
void test(char *str)
{
CAN(tabla[str[0]-'A']);
}
También podrías crear un array asociativo (o un mapa), en el que los índices sean cadenas del tipo que mencionas: MAX_A, MAX_B, etc.
Hasta pronto.
--
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Más información sobre la lista de distribución Cconclase