mpasm - overlapping variables in a udata directive
I have used the first method a few times, although two names for the same byte is something to avoid unless there really is some advantage.

Unfortunately, MPASM throws warnings for some perfectly normal and useful things.  You can selectively disable nuisance warnings by the warning number.  I guess I must have done that long ago in my setup code since I don't get that warning.

I don't like using #define because, just as in C, it is only a string substitution.  The assembler replaces one string with another and knows nothing more about it than that.  The first method is better since the assembler understands that the symbol is the address of a variable.

Another issue with your code is that you are using a unusual byte order.  On a 8 bit machine, the byte order of muli-byte variables is up to you.  However, there are a few cases where native data values are larger than 8 bits, and the PIC hardware assumes they are stored in least to most significant byte order.  This is therefore also how libraries are written.  You should use low byte first order unless there is a specific and special reason not to.  For example, I have stored IP addresses in high to low byte order because that is how they are sent and received in the IP protocol.  But in all such cases there must be a comment flagging the fact that the byte order is opposite from the standard expected order.

I also think naming each byte of a multi-byte variable adds more confusion due to clutter than the extra names might help with.  For example, I define multi-byte variables like this:


myvar    res     4           ;32 bit integer


In that case, I make a point of always referecing individual bytes by using the variable name plus the explicit byte offset, even when that byte offset is 0.  For example:


;   Increment MYVAR by one.
;
         banksel myvar
         incf    myvar+0     ;increment the low byte
         movlw   0
         addwfc  myvar+1     ;propagate carry to higher bytes
         addwfc  myvar+2
         addwfc  myvar+3


The "+n" syntax alerts readers to the fact that this is a multi-byte variable, and then which byte is being accessed.