2011-10-30 10 views
9

बिना लाइन पर मैं इस त्रुटि संदेश को समझने की कोशिश कर पागल हो रहा हूं जिसका वास्तविकता/मेरे कोड से कोई स्पष्ट संबंध नहीं है। मैं यहां खोज रहा हूं और एक निष्कर्ष पर आया हूं: आप टाइपिफ द्वारा छिपे पॉइंटर से नफरत करने जा रहे हैं। क्षमा करें, यह मेरे नियंत्रण से बाहर है - प्रोफेसर ने इस तरह से कोड प्रदान किया। मैं समस्या में निर्दिष्ट कोड को संपादित कर रहा हूं। मैं प्रत्येक पुश फ़ंक्शन पर मॉलोक कॉल से बचने और उन्हें द्वितीयक स्टैक में संग्रहीत करने के लिए पूर्ण नोड्स पॉपिंग कर रहा हूं। MakeEmptyS फ़ंक्शन INITIAL_SIZE नोड्स के साथ एक स्टैक प्रारंभ करता है। GrowEmptyS खाली नोड्स के ढेर के लिए और अधिक नोड्स कहते हैंसी - '=' टोकन से पहले अपेक्षित अभिव्यक्ति ... '='

stack.c निम्नलिखित कार्य है: 'से पहले = उम्मीद अभिव्यक्ति: "Stack.c:: 53: 22: त्रुटि

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

मैं इस त्रुटि मिलती है 'टोकन ", जहां लाइन 53 बढ़ती है (एस, INITIAL_SIZE);

संदर्भ के लिए, यहां उगने वाले समारोह है:

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

भले ही आपके प्रोफेसर ने आपको खराब कोड दिया हो, फिर भी आपको इसे पोस्ट करने से पहले इसे सरल बनाने की कोशिश करनी चाहिए। यदि आप हमें INITIAL_SIZE की परिभाषा नहीं दिखाते हैं, तो हमें 'GrowEmptyS (S, INITIAL_SIZE)' के सिंटैक्स को डीबग करना चाहिए? इसके अलावा, GrowEmptys एक प्रीप्रोसेसर मैक्रो या एक समारोह है? एक छोटा, आत्मनिर्भर, सही (संकलित) प्रदान करना, उदाहरण इन सभी सवालों को हल करेगा। Http://sscce.org/ –

+0

देखें आपको यह भी बताना चाहिए कि 'INITIAL_SIZE' को कैसे परिभाषित किया गया है। –

+0

INITIAL_SIZE की परिभाषा प्रदान नहीं करने के लिए खेद है। जैसा कि मैंने कहा, GrowEmptyS एक फ़ंक्शन है। लेकिन अगली बार जब मैं पूर्ण, संकलित स्रोत प्रदान करूंगा। धन्यवाद! – TravisThomas

उत्तर

24

मैं गलत हो सकता है, लेकिन शायद आप उदाहरण के लिए

#define INITIAL_SIZE = 1024 

परिभाषित किया।

आपको = को हटा देना चाहिए।

सही परिभाषा होगा

#define INITIAL_SIZE 1024 

एक सलाह के रूप में, समारोह मापदंडों लोअर केस, नहीं अपर केस :)

void GrowEmptyS(Stack stack, int numToAdd) 

पढ़ने में आसान है के साथ शुरू करना चाहिए।

+0

यह सबसे अधिक संभावना कारण है। –

+0

यूप :) सामान्य। –

+0

वह था। धन्यवाद! – TravisThomas

संबंधित मुद्दे