2015-04-10 2 views
-1

Обычно я просто скрываю форумы, пока не могу найти подсказку, чтобы помочь мне, но для этого ... У меня нет идея.Создание стека в C, получение ошибки "error: expected") 'before' * 'token "

Так соответствующие куски кода

struct com_stack 
{ 
    unsigned el_num; 
    struct command *st;           
    unsigned top; 
}; 
void com_push (com_stack* s,command input) //error regarding this line 
{ 
    if(s->top == (s->el_num - 1)) 
    { 
    s->el_num+=64; 
    s->stk=(command*)realloc(s->stk,sizeof(struct command)*s->el_num); 
    } 
    s->stk[s->top]=input; 
    s->top++; 
} 

Я считаю, что я создал правильно-структуру для стека, который будет содержать команды. Для el_num позже будет назначен начальный размер стека, а top - это номер элемента, который находится сверху.

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

Любая помощь или совет будут очень признательны.

+6

Вы не можете использовать «голое» имя 'struct' в C. Либо добавьте' typedef', либо используйте 'struct com_stack * s'. – dasblinkenlight

+0

Привет, спасибо за ваш ответ. Я только что изменил struct com_stack * s, и теперь у меня возникает целый набор ошибок. ожидается декларация спецификаторы или «...» перед „команды“ я думаю, что мне нужно STRUCT линии всасывания команды „структура com_stack“ не имеет член с именем „СТК“ .. Я получаю кучу этих данных, и я не уверен, что делать. Прошло некоторое время с тех пор, как я последний раз закодировал, и это сбивает с толку. Благодарим за отзыв, хотя. – Jack

+1

Ваш 'struct com_stack' * не имеет члена с именем' stk' - он имеет имя 'st'. –

ответ

0

Typedef ваш struct или указать struct в функциях для type.

Кроме того, ваш struct называется com_stack не член stk но есть член st.

struct com_stack 
{ 
    unsigned el_num; 
    struct command *st;           
    unsigned top; 
}; 

void com_push (struct com_stack* s, struct command input) // <-- add "struct" 
{ 
    if(s->top == (s->el_num - 1)) 
    { 
    s->el_num+=64; 
    s->st=(struct command*)realloc(s->stk,sizeof(struct command)*s->el_num); // <-- st, not stk and need "struct" here as well 
    } 
    s->st[s->top]=input; // <-- st, not stk 
    s->top++; 
} 
+0

Пробовал двигаться, но нужно 15 репутации. Огромное спасибо.Один недостающий момент состоит в том, что для кастинга также должна быть структура. Теперь, надеюсь, моя логика верна для функции push. – Jack

+0

@Jack Продолжайте возвращаться к StackOverflow и получите больше rep! –

+1

@Jack - Просто примите ответ Джареда - не нужно его повышать. –

Смежные вопросы