2011-10-30 13 views
9

Me estoy volviendo loco tratando de descubrir este mensaje de error que no tiene una conexión obvia con la realidad/mi código. He estado buscando aquí y llego a una conclusión: vas a odiar el puntero oculto por typedef. Lo siento, está fuera de mi control. Prof proporcionó el código de esa manera. Estoy editando el código como se especifica en el problema. Estoy reventando nodos completos para evitar llamadas malloc en cada función de inserción y almacenarlas en una pila secundaria. La función MakeEmptyS inicializa una pila con nodos INITIAL_SIZE. GrowEmptyS añade más nodos a la pila de nodos vacíosC - expresión esperada antes de '=' token ... en línea sin '='

stack.c tiene la siguiente función:

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); 
    } 
    } 
} 

me sale este error: "Stack.c: 53: 22: error: la expresión esperada antes '= 'token', donde la línea 53 es GrowEmptyS (S, INITIAL_SIZE);

Para referencia, aquí es la función creciendo:

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); 
     } 
    } 
+0

Aunque su profesor le dio un código incorrecto, debe intentar simplificarlo antes de publicarlo aquí. ¿Cómo se supone que debemos depurar la sintaxis de 'GrowEmptyS (S, INITIAL_SIZE)' si no nos muestra la definición de INITIAL_SIZE? Además, ¿GrowEmptyS es una macro o una función del preprocesador? Proporcionar un ejemplo corto, autónomo, correcto (compilable) resolverá todas estas preguntas. Consulte http://sscce.org/ –

+0

También debe indicar cómo se define 'INITIAL_SIZE'. –

+0

Perdón por no proporcionar la definición de INITIAL_SIZE. Como dije, GrowEmptyS es una función. Pero la próxima vez proporcionaré la fuente completa y compilable. ¡Gracias! – TravisThomas

Respuesta

24

puedo estar equivocado, pero probablemente haya definido

#define INITIAL_SIZE = 1024 

por ejemplo.

Debe eliminar el =.

La definición correcta sería

#define INITIAL_SIZE 1024 

Como consejo, parámetros de función deben comenzar con minúsculas, mayúsculas no :)

void GrowEmptyS(Stack stack, int numToAdd) 

es más fácil de leer.

+0

Esta es probablemente la causa. –

+0

Sí, :) típico. –

+0

Eso fue todo. ¡Gracias! – TravisThomas

Cuestiones relacionadas