多个文件使用同一个函数时的重复定义错误
我用a.h,a.c实现了一个函数,在b.c ,c.c,d.c中均使用了这个函数,所以在b.c,c.c,d.c中用#include "a.h"包含了进来,分别使用 gcc -c a.c gcc -c b.c gcc -c c.c gcc -c d.c来生成相应的.o文件没有错误,但用 gcc -o main.out a.o b.o c.o d.o 时出现a.c中实现的函数重复定义错误,这该怎么办?
要是在编译 b.o,c.o,d.o时不包含#include"a.h"时,有一个警告信息,说用到的函数没有找到,但在最终用
gcc -o main.out a.o b.o c.o d.o来生成main.out时就没有错误了,而且是 main.out 执行的也正确,这是怎么回事?