我试图在C中实现堆栈,它在我的MinGw编译器中出现了奇怪的错误
gcc -Wall -o stack stack.c
Stack.c
#include "stack.h"
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
Stack *create(int size) {
Stack *result;
result = (Stack *) malloc( sizeof(Stack) * size );
assert(result != NULL);
result -> file = result;
result -> maxAllocate = size;
result -> top = -1;
return result;
}
stack.h
#define MAX_SIZE 1024
typedef struct {
void **file;
int top;
int maxAllocate; // current size of array allocated for stack
} Stack;
Stack *create(int size);
int push(Stack *s, void *x);
void *pop(Stack *s);
int isEmpty(Stack *s);
错误
C:\test>gcc -Wall -o stack stack.c
stack.c: In function 'create':
stack.c:26:17: warning: assignment from incompatible pointer type [enabled by de
fault]
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libmingw32.a(main.o): In function
`main':
C:\MinGW\msys\1.0\src\mingwrt/../mingw/main.c:73: undefined reference to `WinMai
n@16'
collect2: ld returned 1 exit status
答案 0 :(得分:2)
使用gcc -Wall -o stack stack.c
,您只编译stack.c
(其中包含o main函数),但对于正常运行的应用程序,您还需要main
函数作为主要入口点:{ {3}}
答案 1 :(得分:1)
使用带有gcc
选项的-o
意味着您要编译,链接和运行您的程序(此命令不会运行它,但通常这就是使用此类用法的原因)。如果没有entry point
(在这种情况下它是main
函数),您就无法运行程序。
如果您只想检查stack.c
编译是否使用gcc -Wall -c stack.c
。