C - ожидаемое выражение перед '=' token ... on line без '=' - PullRequest
9 голосов
/ 30 октября 2011

Я схожу с ума, пытаясь выяснить это сообщение об ошибке, которое не имеет очевидной связи с реальностью / моим кодом.Я искал здесь и пришел к одному выводу: вы будете ненавидеть указатель, скрытый typedef.Извините, это вне моего контроля - проф предоставил код таким образом.Я редактирую код, как указано в проблеме.Я засовываю полные узлы, чтобы избежать вызовов malloc для каждой функции push и сохраняю их во вторичном стеке.Функция MakeEmptyS инициализирует стек с узлами INITIAL_SIZE.GrowEmptyS добавляет больше узлов в стек пустых узлов

stack.c имеет следующую функцию:

void
MakeEmptyS( Stack S )
{
  PtrToNode tmp;
  if ( S == NULL )
    Error( "Must use CreateStack first" );
  else
  {
    GrowEmptyS( S, INITIAL_SIZE);
    while (!IsEmptyS( S) )
    {
        tmp = TopopNode( S );
        PushEmpty( S, tmp);
    }
  }
}

Я получаю эту ошибку: "Stack.c: 53: 22: ошибка: ожидаетсявыражение до '=' token ", где строка 53 - GrowEmptyS (S, INITIAL_SIZE);

Для справки, вот функция Grow:

   void
   GrowEmptyS( Stack S, int NumToAdd )
   {
       int i;
       PtrToNode TmpCell;
       for( i = 0; i < NumToAdd; i++ )
       {
         TmpCell = malloc( sizeof(struct Node));
         if ( TmpCell == NULL )
           FatalError( "Out of Space!!!");
         else
           PushEmpty(S,TmpCell);
       }
   }

1 Ответ

28 голосов
/ 30 октября 2011

Я могу ошибаться, но, возможно, вы определили

#define INITIAL_SIZE = 1024

например.

Вы должны удалить =.

Правильное определение будет

#define INITIAL_SIZE 1024

В качестве рекомендации, параметры функции должны начинаться с нижнего регистра, а не с верхнего регистра:)

void GrowEmptyS(Stack stack, int numToAdd)

легче читать.

...