Estoy jugando con la pila y los parámetros de llamada de la función. Lo que quiero lograr aquí es obtener el valor de los parámetros variables directamente utilizando la pila.Obtener argumentos variables directamente desde la pila
Funciona (o parece que funciona) bien cuando no uso parámetros variables. Esto es lo que está funcionando:
void test(int a, int b)
{
unsigned char *ptr;
int i;
ptr = (unsigned char*)&a;
for (i = 0; i < 4; i++)
{
printf("%d,", *ptr);
}
}
que funciona, que puede recuperar el valor de b; El mismo código utilizando
void test(int a, ...);
como el prototipo de la función no funciona.
No puedo entender lo que está pasando aquí.
¿Me puede ayudar? Gracias!
Edit: Ok, entonces ve que no hay una manera estable y confiable de hacer ese tipo de cosas por mi cuenta. Digamos que en la función de llamada, conozco el tamaño de los datos (pero no el tipo) del argumento de la variable, ¿hay alguna forma de captarlos?
Lo que está haciendo es un comportamiento indefinido. ¿Qué estás intentando lograr? –
¿Cómo intentas obtener los argumentos variables? Sugerencia: stdargs.h, va_start, va_arg, va_end. – arunkumar
@jweyric: estoy usando gcc. Sé que podría usar va_ * macro, pero eso es puramente expiremental, solo estoy intentando cosas para saber cómo funciona: P – Xaqq