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)
更容易阅读.