I have a project that compiles just fine with older C18 versions, but
when i try to compile it under 2.4 i get the following errors:
C:\mcc18\h\p18f8520.h:169:Error  type mismatch in redeclaration of ‘PORTBbits’
C:\mcc18\h\p18f8520.h:201:Error  type mismatch in redeclaration of ‘PORTCbits’
My project does not even reference these files anywhere in code. It uses ifi_picdefs.h. Does anybody have any idea whatsoever how to fix this?
I think the problem might be that you have two files of different vintage.
p18f8520.h has to match ifi_picdefs.h, and p18f8520.h has probably changed from the earlier versions of C18.
See if there’s a difference between the current default code’s version of ifi_picdefs.h and the older one you’re using.
P.S. p18f8520.h gets dragged in by the compiler based on the target PIC model called out by the “-p=18F8520” statement in the compile line.
Looking more closely I’m not so sure that really is the answer.
I tried removing my p18f8520.h file, then compiling and my project didn’t mind a bit that it was gone.
Maybe for some reason the old project is dragging that file in, but shouldn’t be.
No you were right. I replaced ifi_picdefs.h with a copy of p18f8520.h, added the following code and now it works. I’m not really sure what that code snippet does, but it is includeed in ifi_picdefs and ifi_default checks to see if UNCHANGEABLE_DEFINITION_AREA is defined. If it is not, it throws an error. Everything works fine now. I am going to update the compiler on all my computers, and replace ifi_picdefs.h with the ifi_picdefs.h from the 2005 default code.