メソッドを持つスタックデータ構造を構築しました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も実行されます(以前は実行されていませんでした)。