The following two lines produce an L46 warning:
sbit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab = 0xD0^0;sbit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac = 0xD0^1;*** WARNING L46: SFR SYMBOL HAS DIFFERENT VALUES SYMBOL: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa MODULE: MAIN.obj (MAIN) DEFINED: MAIN.obj (MAIN)
sbit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab = 0xD0^0;
sbit aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac = 0xD0^1;
The identifiers are 41 characters long each. It seems the linker discards anything after 40 characters.
I could not find any information on such a limit in the documentation. Could someone point me to the right place?
Also, I would like to know whether there are any options to disable this limit or to circumvent it (other than making the identifier shorter).
Andy Neil said:Do that
Well... "other than making the identifier shorter"
Andy Neil said:make sure that your identifiers are unique within the first 40 characters.
Not great either, but I guess it is an option.
Andy Neil said:Note also: https://developer.arm.com/documentation/ka002407/latest
This only mentions case-insensitivity, not identifier length limits.
Niko O said:This only mentions case-insensitivity
Indeed - I pointed that out as another thing you will need to be aware of.
Sorry, I don't thing there is an "other than" - you're stuck with the limit.
It might even be a limit of the object module format?
Remember that C51 is a pretty old product - such limitations were common in the days of its youth.