Hi Friends, I'm currently working on C51v6.02 by Keil, My Problem goes like this: I have a project which has the files file1.c, file2.c, file3.c. And header files header1.h, header2.h, header3.h. The source code of file1.c goes like this.
#include "header1.h" #include "header2.h" /* My code */
#include "header1.h" #include "header3.h" /* My code */
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: VARIABLE_NAME MODULE: File_Name.obj (FILE_NAME)
#ifndef __HEADER1_H__ #define __HEADER1_H__ /* My Code */ /* Also includes variables */ #endif
Proudly wasting time since 1981
I'm sure you can; but my point is that you shouldn't have to! The Linker knows the information, so why doesn't it include it in the message?!! eg *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: VARIABLE_NAME MODULE: File_Name1.obj (FILE_NAME) MODULE: File_Name2.obj (FILE_NAME) As I've said before, Borland does it like this. What is the point of saying that it's detected multiple definitions, but then only listing one of them!