编译器出现 ERROR L104: MULTIPLE PUBLIC DEFINITIONS 重定义问题
问题描述:在.h文件中定义数组u8 col[4]={0xfe,0xfd,0xfb,0xf7}; 出现问题,将数组定义移到.c文件后错误消失
原因:比如对于一个h文件aa.h,里面有定义常量,变量。
现在有两个相对应的文件,bb.c和bb.h,如果在bb.h中写入#include "aa.h",然后在main.c文件中#include "bb.h"
这时候main.c对于include "bb.h"这语句,包好了bb.h中对于aa.h的内容,也就是包含了一次aa.h中的那些常量,变量
而bb.c这文件本身有include "bb.h",也就是造成第二次包含了aa.h中的那些常量,变量,所以提示重复定义
对于这个问题,解决的办法有一个,上边已经说了,用static能通过编译,但是有弊端,所以不好,
把#include "aa.h"这语句放到bb.c文件中,当main.c包含bb.h时就不会包含aa.h这文件造成重复,而bb.c中#include "aa.h",
所以bb.c中函数便能调用aa.h中所定义的东西。从而避免重复定义。