Bank qualifiers are not normally needed when writing program for an OCG (Omniscient Code Generation) compiler (such as the MPLAB XC8 compiler), however if there is assembly code that assumes these variables are in a certain bank then the C variables must be qualified using the bank qualifiers (bank0, bank1, bank2 etc).
The second thing that must be done is to ensure the qualifiers are honored by setting the --ADDRQUAL option to "require", or set the Address qualifiers selector to "Require" under the Compiler Settings. Without this, the qualifiers will be ignored by the compiler.
If the variables are not qualified and are placed in banks other than those expected by the assembly code, fixup errors may occur, or the code may fail. Projects are more portable if the assembly code always selects the bank of any object and applies the correct file address mask. In this way, there are no assumptions about the location of the objects accessed and the C variables do not need to be qualified.
Microchip Technology acquires Atmel