Я хочу вызвать функцию, которая создает меню с чем-то вроде этого:
Mode_Menu("Item 1", "Item A1c", "Item Fred", ..... "Item xxx")
, где n
может быть любым разумным числом, и каждый элемент может иметь произвольную длину.
Я пробовал следующее (игнорируйте числа в Offer_Mode
- это просто координата Y
на ЖК-дисплее)
void Mode_Menu(char *m1, ...)
{
va_list argp;
va_start(argp, *m1);
Offer_Mode(2, m1++);
Offer_Mode(33, m1++);
Offer_Mode(64, *m1++;
Offer_Mode(97, *m1++);
Offer_Mode(130, *m1++);
}
Но я получаю
Item 1
tem 1
em 1
m 1
1
т.е. указатель перемещается вдоль первого элемента и даже не видит второй элемент в вызове функции.
Я перепробовал все заклинания, которые мог придумать, чтобы перейти к следующим элементам, используя такие вещи, как *m1[]
или m1[2]
в определении функции и в va_start
, но все, что я пробую, выдает ошибки.
Может кто-нибудь указать мне правильный способ сделать это, пожалуйста?
(и я сначала интенсивно искал, поэтому, пожалуйста, не отмечайте как дубликаты. Есть много примеров, использующих целые числа, но ни одного, которые я не могу найти, используя массивы символов).