*** WARNING L46: SFR SYMBOL HAS DIFFERENT VALUES SYMBOL: ScdIsr MODULE: .\obj\scd.obj (SCD) DEFINED: .\obj\scd.obj (SCD)
I defined SCDISR in a header file:
sfr SCDISR = 0xC0;
there is no SCDISR anywhere, why I got this warning/
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: t MODULE: .\obj\extalgo.obj (EXTALGO) DEFINED: .\obj\eeprom.obj (EEPROM)
I only defined t in eeprom.c as a local variable, but I got this error.
Oh, and one more thing:
SYMBOL: ScdIsr sfr SCDISR = 0xC0;
You're not by some strange fate using the linker in case-insensitive mode, are you? If so, that may well be the root of your problem. The linker is complaining about a ScdIsr with mixed upper and lower case letters, while the symbol you searched for is all upper case.
That's the problem, I did't notice it. There is another function named ScdIsr. Thanks .
I don't understand why compiler report this error?
It's not the compiler, actually, it's the linker. And it's reporting it because your program cannot be linked while the linker is in case-insensitive mode --- if you want to use different things whose name only differs in letter case, you have to enable case-sensitivity.