2011-10-30 12 views
9

現実/私のコードとの明白な接続がないこのエラーメッセージを理解しようと狂ってしまいます。私はここで検索し、結論に至りました。あなたはtypedefによって隠されたポインタを嫌うでしょう。申し訳ありませんが、それは私のコントロール外です - 教授はコードをそのように提供しました。私は問題で指定されたコードを編集しています。私は各プッシュ関数でmalloc呼び出しを避け、それらをセカンダリスタックに格納するために完全なノードをポップしています。 MakeEmptyS関数は、INITIAL_SIZEノードを持つスタックを初期化します。 GrowEmptySC - '='トークンの前に期待される表現 '='なしの行

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)です。

参考のため、ここではグロウ機能である:

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

関連する問題