编译代码的时候,出现下面的错误信息,好几处源文件都报这样的错误
Platform.o: In function `printDbug':
code/PT/uart.h:64: multiple definition of `printDbug'
main.o:code/PT/uart.h:64: first defined here
test_config.o: In function `printDbug':
code/PT/uart.h:64: multiple definition of `printDbug'
main.o:code/PT/uart.h:64: first defined here
可以看到,在源文件main.o Platform.o,test_config.o文件都报函数的重复定义,就怀疑是重复定义的函数“printDbug”是因为头文件的的重复加载导致的,就在头文件加上了防止头文件加载的宏定义,重新编译之后还是报这样的错误;
#ifndef __UART__H__
#define __UART__H__
这时就去搜这个函数的实现,发现这个函数的实现是在头文件里,并没有函数的声明,直接在头文件里定义的这个函数;在头文件里做函数声明,在源文件里实现函数的定义;