メソッドを持つスタックデータ構造を構築しましたpeek
。mainwarning: initialization makes pointer from integer without a cast
を呼び出すと、コンパイラから警告が表示されます。peek
これが私が持っているものです:
stack.h
:
struct stack_elem {
struct stack_elem *next;
};
struct stack {
struct stack_elem *top;
};
void stack_init(struct stack *stack);
int isEmpty(struct stack *);
struct stack_elem * peak(struct stack *);
そしてその実装:
void stack_init(struct stack *stack) {
stack->top = NULL;
}
int isEmpty(struct stack *stack) {
if (stack->top == NULL)
return 1;
else
return 0;
}
struct stack_elem * peek(struct stack *stack) {
if (isEmpty(stack) == 1)
return NULL;
else
return stack->top;
}
私のmain.c
場合、スタックを次のように定義します。
struct stack stack;
stack_init(&stack);
ピークを呼び出します:
struct stack_elem * elem = peek(&stack);
この行は警告をスローします。ここで奇妙なのは、以前はにインポートstack.c
してmain.c
、でコンパイルしたこと$ gcc main.c
です。これにはまったくエラーがありませんでした。ここで、インポートをに変更し、警告をスローするstack.h
コンパイルを行っています。$ gcc main.c stack.c
それを実行すると、segfaultsも実行されます(以前は実行されていませんでした)。