C - 在'='之前的预期表达式...在没有'='的行上

Tra*_*mas 9 c stack compiler-errors

我疯了,试图弄清楚这个与现实/我的代码没有明显联系的错误信息.我一直在这里搜索并得出一个结论:你会讨厌由typedef隐藏的指针.对不起,这是我无法控制的 - 教授提供了这样的代码.我正在编辑问题中指定的代码.我正在弹出整个节点以避免每个推送功能上的malloc调用并将它们存储在辅助堆栈中.MakeEmptyS函数使用INITIAL_SIZE节点初始化Stack.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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:"Stack.c:53:22:错误:在'='标记之前的预期表达式",其中第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);
       }
   }
Run Code Online (Sandbox Code Playgroud)

Sal*_*iti 28

我可能错了,但可能是你定义的

#define INITIAL_SIZE = 1024
Run Code Online (Sandbox Code Playgroud)

例如.

你应该删除=.

正确的定义是

#define INITIAL_SIZE 1024
Run Code Online (Sandbox Code Playgroud)

作为建议,函数参数应该从小写开始,而不是大写:)

void GrowEmptyS(Stack stack, int numToAdd)
Run Code Online (Sandbox Code Playgroud)

更容易阅读.