//a.c
int foo;
int bar;
//a.h
extern int foo;
extern int bar;
//b.c
int foo=5;
//c.c
#include <stdio.h>
#include "a.c"
int main()
{
printf("%d,%d\n",foo,bar);
return 0;
}
//terminal
allen@xps:~/tmp$ ls
a.c a.h a.out b.c c.c
allen@xps:~/tmp$ rm a.out
allen@xps:~/tmp$ ls
a.c a.h b.c c.c
allen@xps:~/tmp$ gcc -c *.c
allen@xps:~/tmp$ ls
a.c a.h a.o b.c b.o c.c c.o
allen@xps:~/tmp$ gcc *.o -o a.out
allen@xps:~/tmp$ ls
a.c a.h a.o a.out b.c b.o c.c c.o
allen@xps:~/tmp$ ./a.out
5,0
如果写一个简单的Makefile
实现自动化编译:
EXEC = a.out
SRCS = a.c b.c c.c
OBJS = $(SRCS:.c=.o)
$(EXEC): $(OBJS)
cc $(OBJS) -o $(EXEC)
$(OBJS): $(INCL)
clean:
rm -f $(OBJS) $(EXEC)
其实这个笔记只是想测试一下C语言中extern
在头文件中的一点用法,还有源文件中include
源文件的效果。不总结了,直接看上面例子知道可以这样用就行。