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