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 [1109] type mismatch in redeclaration of ‘PORTBbits’
C:\mcc18\h\p18f8520.h:201:Error [1109] 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.
It looks like you are right That particular union is different in both files. If the compiler automatically drags in p18f8520.h do you have any idea what the purpose of ifi_picdefs.h is?
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.
Good deal!
Glad it worked out. As you know, it can be really hard to recreate someone else’s error sometimes, so sometimes it’s just semi-educated guesswork.