We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello all, My project with 3 files as following ,the MAIN is in sys.c,all 3 files are compiled well each other. File a: including sys.c and common.h File b: including rtk.c and rtk.h File c: including blt.c and blt.h rtk.h: ... extern uchar code rtk_Cmd[20]={...}; extern struct Time {uchar Sec;...}; extern struct Date {...}; extern struct Time sGps; ... rtk.c: #include <rtk.h> ... syc.c: #include <common.h> #include <rtk.h> #include <blt.h> .... void main() { ... Func1(sGps.Sec); Func2(rtk_Cmd); ... } when build all files, the error L104:mutiple public defintion (rtk_cmd) Warning L1: unresolved external symbol(sGps). Give me your hands ,thanks a lot!
Thank you for your help. I have resolved it as follow: rtk.h: struct MesInfo { ... } rtk.c: #include<rtk.h> struct MesInfo GpsInfo; .... sys.c: #include<rtk.h> extern struct MesInfo GpsInfo; ... In this way,all files can be build ,is it right?
In this way,all files can be build ,is it right? It may work, but it's not right. As a rule of thumb: never write 'extern' in a .c file --- it only ever should appear in .h files. In your case, this line:
extern struct MesInfo GpsInfo;