スタックを構築するコードを記述しようとしていますが、意味をなさないコンパイル エラーが発生します。これが私のものstack.h
です:
struct StackNode {
void* previous;
int value;
};
struct Stack {
StackNode* top;
};
Stack* new_stack () {
StackNode stn = { NULL, 0 };
Stack* st = (Stack*) malloc(sizeof(Stack));
st->top = NULL;
return st;
}
そして私のmain.c
:
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
int main () {
struct Stack* st = new_stack();
return 0;
}
gcc
これらのエラーをスローします:
make (ディレクトリ: /home/diego/temp/stack) gcc -g -O2 -std=c99 -c
main.c main.c:4 からインクルードされたファイル: コンパイルに失敗しました。スタック.h:10:
エラー: 'StackNode' の前に指定子修飾子リストが必要です</p>
stack.h:14: エラー: '='、','、';'、'asm' または '<strong>属性'</p> が必要です
'*' トークンの前 main.c: 関数 'main' 内: main.c:8: 警告:
関数 'new_stack' main.c:8 の暗黙的な宣言: 警告:
初期化により、キャストを使用せずに整数からポインターが作成されます。 make: *
[main.o] エラー 1
編集:エラーが見つかりました。struct
前Stack
とStackNode
いくつかの行に入れるのを忘れました。常にstruct
これらの行を使用すると、問題が解決します。