BL51: SYMBOL VS PUBLIC VARIABLES
Information in this article applies to:
I notice that the linker map file identifies some variables as type SYMBOL instead of PUBLIC even though I've declared them the same way as other PUBLIC variables. A sample declaration occurs below:
#define MAX_MESSAGE_LENGTH 0x40 static xdata unsigned char pkt_start; static xdata unsigned char temp_msg[ MAX_MESSAGE_LENGTH + 2 ];
What am I doing wrong?
The static keyword causes these variables to be identified as SYMBOL instead of PUBLIC. And, that is correct, variables declared with the static keyword are not PUBLIC. Although, access to the variables in either case follows the normal rules of scope.
Removing the static keyword from the declarations renders the desired output in the memory map for a global declaration of the variables. Remember, the static keyword excludes a variable from overlay analysis and limits the scope to the current file or function.
Last Reviewed: Saturday, February 5, 2005
of your data.