Получение переменных аргументов непосредственно из стека

Я играю со стеком и параметрами вызова функции. Здесь я хочу получить значение переменных параметров напрямую, используя стек.

Он работает (или кажется, работает) нормально, когда я не использую параметры переменных. Вот что работает:

void test(int a, int b)
{
  unsigned char *ptr;
  int i;

  ptr = (unsigned char*)&a;
  for (i = 0; i < 4; i++)
    {
      printf("%d,", *ptr);
    }    
}

Это работает, я могу получить значение b; Тот же код, использующий

void test(int a, ...);

в качестве прототипа функции, не работает.

Я не могу понять, что здесь происходит.

Вы можете мне помочь? Спасибо!

Изменить: Хорошо, тогда кажется, что не существует стабильного и надежного способа делать такие вещи самостоятельно. Допустим, в вызываемой функции я знаю размер данных (но не тип) аргумента переменной, есть ли способ получить их?

5
задан Xaqq 23 August 2011 в 20:47
поделиться