问题描述:因为要使用CAN进行数据传输,因此在主程序“test.c”中采用#include “can.h”,调用“can.h”中的函数和变量。结果编译后出现许多Error L6200E: symbol xxx multiply defined  ...。

原因:因为在“can.h”中定义了许多变量,“can.c”文件中采用#include “can.h”,调用“can.h”中的变量;在主函数"test.c"中也采用#include “can.h”,调用“can.h”中的变量,导致“can.h”中的变量被重复定义。

解决方法:首先,不应该在“can.h”中定义“can.c”中使用的变量,应该直接在“can.c”中定义所需的变量。然后再主程序"test.c"中将所调用“can.c”中的变量定义为 extern,例如 external ((u32)  count) ; ,问题得到解决。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐