*** 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.
there is no SCDISR anywhere,
Well, there clearly is at least one. So I'll take it you mean there is none anywhere else. But even so, when the compiler issue a message like that, the odds that the compiler is wrong and you're right are really rather slim. It's a whole lot more likely that missed something in your search (e.g. a library module you pulled in) than that the compiler would get something like that wrong.
Again, the compiler disagrees with your assertion, and it's unlikely that of the two of you, it's the compiler that's wrong.
What you should do is cut your program down to the absolutely smallest one you can find that still shows this behaviour. Odds are that somewhere along the way, you'll find a mistake in your source --- which you should document here, for the benefit of future readers.
If you don't find anything suspicious, show the remaining code here, and I'm quite sure somebody else will.