私はこの中でC.に基本的なスタックを使用するプログラムを作成しています、私は見出しに定義された2つの構造を有する:Cデータ構造エラー
- 構造という名前の文字列を持つノードと、前へのポインタをメンバーとしてのノード。
メンバーは最後のノードへのポインタを持つStackという名前の構造体です。ここで
は私のヘッダファイルでこれらの構造の定義は以下のとおりです。CreateStack:この関数は、スタックを作成します(等価
#include <stdio.h> #include <stdlib.h> typedef struct Node { const char* string; struct Node *prev; }; typedef struct Stack { size_t sizeOfStack; size_t sizeOfElem; struct Node *last; };
一つの方法は私のエラーを与えることCreateStack()でありますコンストラクタ)。
(A)名称:CreateStack
(b)の戻り値の型:ヒープに割り当てられたスタックへのポインタ。ここで
は私の実装
Stack* CreateStack() {
Stack* stack = malloc(sizeof(*stack));
if (stack == NULL) {
return NULL;
}//end of if
stack->sizeOfElem = 0;
stack->sizeOfStack = 0;
stack->last = NULL;
return stack;
}//end of CreateStack
である。しかし、コンパイラはこれを吐き出している:
エラー: 'スタック{別名構造体スタックが}' = '最後の' stack->最後という名前のメンバーを持っていませんノード;
エラー: 'Stack {aka struct stack}'には 'last'という名前のメンバーはありません node-> prev = stack-> last;
エラー: 'Stack {aka struct stack}'には 'last'という名前のメンバーはありません Node * node = stack-> last;
誰かがこの問題をここで指摘できれば、私は大いに感謝します。なぜ私は最後のことが物事ではないと言っているのか混乱していますが、他の構造と同じように定義されているフラグはフラグを立てません。ありがとう。
あなたのコンパイルエラーを使用すると、表示されたコードではありません。あなたのtypedefsは不完全です。 – aschepler
"デバッグのヘルプを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および問題そのものを再現するために必要な最短コードが含まれている必要があります。参照:[**最小限で完全で検証可能なサンプルを作成する方法**](http://stackoverflow.com/help/mcve)」を参照してください。 –
@ascheplerはいそれは長いコードなので、このエラーは構造体を使用するメソッドに固有のように見えないので、構造体にエラーがあると推測します。私は構造そのものを提供しました。すべてのエラーは "最後"を存在しないものとして参照します。 –